@@ -104,6 +104,160 @@ char *Cython_HL_keywords[] = {
104104
105105char * MD_HL_extensions [] = {".md" ,".markdown" ,NULL };
106106
107+ /* ======================= JavaScript ======================================= */
108+
109+ char * JavaScript_HL_extensions [] = {".js" ,".jsx" ,".mjs" ,".cjs" ,NULL };
110+ char * JavaScript_HL_keywords [] = {
111+ /* JavaScript Keywords */
112+ "break" ,"case" ,"catch" ,"class" ,"const" ,"continue" ,"debugger" ,"default" ,
113+ "delete" ,"do" ,"else" ,"export" ,"extends" ,"finally" ,"for" ,"function" ,
114+ "if" ,"import" ,"in" ,"instanceof" ,"let" ,"new" ,"return" ,"super" ,"switch" ,
115+ "this" ,"throw" ,"try" ,"typeof" ,"var" ,"void" ,"while" ,"with" ,"yield" ,
116+ "async" ,"await" ,"of" ,"true" ,"false" ,"null" ,"undefined" ,
117+
118+ /* JavaScript Built-ins */
119+ "Array|" ,"Object|" ,"String|" ,"Number|" ,"Boolean|" ,"Date|" ,"Math|" ,
120+ "RegExp|" ,"Error|" ,"JSON|" ,"console|" ,"window|" ,"document|" ,"setTimeout|" ,
121+ "setInterval|" ,"clearTimeout|" ,"clearInterval|" ,"parseInt|" ,"parseFloat|" ,
122+ "isNaN|" ,"isFinite|" ,"encodeURI|" ,"decodeURI|" ,"Promise|" ,"Map|" ,"Set|" ,
123+ "WeakMap|" ,"WeakSet|" ,"Symbol|" ,"Proxy|" ,"Reflect|" ,"Generator|" ,NULL
124+ };
125+
126+ /* ======================= TypeScript ======================================= */
127+
128+ char * TypeScript_HL_extensions [] = {".ts" ,".tsx" ,NULL };
129+ char * TypeScript_HL_keywords [] = {
130+ /* TypeScript Keywords (includes JavaScript) */
131+ "break" ,"case" ,"catch" ,"class" ,"const" ,"continue" ,"debugger" ,"default" ,
132+ "delete" ,"do" ,"else" ,"export" ,"extends" ,"finally" ,"for" ,"function" ,
133+ "if" ,"import" ,"in" ,"instanceof" ,"let" ,"new" ,"return" ,"super" ,"switch" ,
134+ "this" ,"throw" ,"try" ,"typeof" ,"var" ,"void" ,"while" ,"with" ,"yield" ,
135+ "async" ,"await" ,"of" ,"true" ,"false" ,"null" ,"undefined" ,
136+
137+ /* TypeScript Specific */
138+ "interface" ,"type" ,"enum" ,"namespace" ,"module" ,"declare" ,"abstract" ,
139+ "implements" ,"private" ,"protected" ,"public" ,"readonly" ,"static" ,
140+ "get" ,"set" ,"as" ,"keyof" ,"infer" ,"is" ,"asserts" ,
141+
142+ /* TypeScript Types */
143+ "string|" ,"number|" ,"boolean|" ,"object|" ,"any|" ,"unknown|" ,"never|" ,
144+ "void|" ,"bigint|" ,"symbol|" ,"Array|" ,"Promise|" ,"Record|" ,"Partial|" ,
145+ "Required|" ,"Pick|" ,"Omit|" ,"Exclude|" ,"Extract|" ,"NonNullable|" ,NULL
146+ };
147+
148+ /* ======================= Swift ============================================ */
149+
150+ char * Swift_HL_extensions [] = {".swift" ,NULL };
151+ char * Swift_HL_keywords [] = {
152+ /* Swift Keywords */
153+ "associatedtype" ,"class" ,"deinit" ,"enum" ,"extension" ,"fileprivate" ,"func" ,
154+ "import" ,"init" ,"inout" ,"internal" ,"let" ,"open" ,"operator" ,"private" ,
155+ "protocol" ,"public" ,"static" ,"struct" ,"subscript" ,"typealias" ,"var" ,
156+ "break" ,"case" ,"continue" ,"default" ,"defer" ,"do" ,"else" ,"fallthrough" ,
157+ "for" ,"guard" ,"if" ,"in" ,"repeat" ,"return" ,"switch" ,"where" ,"while" ,
158+ "as" ,"catch" ,"false" ,"is" ,"nil" ,"rethrows" ,"super" ,"self" ,"Self" ,
159+ "throw" ,"throws" ,"true" ,"try" ,"async" ,"await" ,"some" ,"any" ,
160+
161+ /* Swift Types */
162+ "Int|" ,"Double|" ,"Float|" ,"Bool|" ,"String|" ,"Character|" ,"Array|" ,
163+ "Dictionary|" ,"Set|" ,"Optional|" ,"Result|" ,"Error|" ,"AnyObject|" ,
164+ "AnyClass|" ,"Protocol|" ,"Codable|" ,"Hashable|" ,"Equatable|" ,
165+ "Comparable|" ,"Collection|" ,"Sequence|" ,NULL
166+ };
167+
168+ /* ======================= SQL ============================================== */
169+
170+ char * SQL_HL_extensions [] = {".sql" ,".ddl" ,".dml" ,NULL };
171+ char * SQL_HL_keywords [] = {
172+ /* SQL Keywords */
173+ "SELECT" ,"FROM" ,"WHERE" ,"INSERT" ,"UPDATE" ,"DELETE" ,"CREATE" ,"DROP" ,
174+ "ALTER" ,"TABLE" ,"INDEX" ,"VIEW" ,"DATABASE" ,"SCHEMA" ,"COLUMN" ,"PRIMARY" ,
175+ "FOREIGN" ,"KEY" ,"REFERENCES" ,"CONSTRAINT" ,"UNIQUE" ,"NOT" ,"NULL" ,"DEFAULT" ,
176+ "AUTO_INCREMENT" ,"IDENTITY" ,"SERIAL" ,"BOOLEAN" ,"TINYINT" ,"SMALLINT" ,
177+ "MEDIUMINT" ,"INT" ,"INTEGER" ,"BIGINT" ,"DECIMAL" ,"NUMERIC" ,"FLOAT" ,"DOUBLE" ,
178+ "REAL" ,"BIT" ,"DATE" ,"TIME" ,"DATETIME" ,"TIMESTAMP" ,"YEAR" ,"CHAR" ,"VARCHAR" ,
179+ "BINARY" ,"VARBINARY" ,"TINYBLOB" ,"BLOB" ,"MEDIUMBLOB" ,"LONGBLOB" ,"TINYTEXT" ,
180+ "TEXT" ,"MEDIUMTEXT" ,"LONGTEXT" ,"ENUM" ,"SET" ,"JSON" ,"GEOMETRY" ,"POINT" ,
181+ "LINESTRING" ,"POLYGON" ,"MULTIPOINT" ,"MULTILINESTRING" ,"MULTIPOLYGON" ,
182+ "GEOMETRYCOLLECTION" ,"AND" ,"OR" ,"IN" ,"BETWEEN" ,"LIKE" ,"IS" ,"EXISTS" ,
183+ "ANY" ,"ALL" ,"SOME" ,"UNION" ,"INTERSECT" ,"EXCEPT" ,"INNER" ,"LEFT" ,"RIGHT" ,
184+ "FULL" ,"OUTER" ,"JOIN" ,"ON" ,"USING" ,"GROUP" ,"BY" ,"HAVING" ,"ORDER" ,"ASC" ,
185+ "DESC" ,"LIMIT" ,"OFFSET" ,"DISTINCT" ,"AS" ,"CASE" ,"WHEN" ,"THEN" ,"ELSE" ,"END" ,
186+ "IF" ,"IFNULL" ,"ISNULL" ,"COALESCE" ,"NULLIF" ,"CAST" ,"CONVERT" ,"SUBSTRING" ,
187+ "LENGTH" ,"UPPER" ,"LOWER" ,"TRIM" ,"LTRIM" ,"RTRIM" ,"REPLACE" ,"CONCAT" ,
188+ "CURRENT_DATE" ,"CURRENT_TIME" ,"CURRENT_TIMESTAMP" ,"NOW" ,"COUNT" ,"SUM" ,
189+ "AVG" ,"MIN" ,"MAX" ,"STDDEV" ,"VARIANCE" ,"BEGIN" ,"COMMIT" ,"ROLLBACK" ,
190+ "TRANSACTION" ,"SAVEPOINT" ,"GRANT" ,"REVOKE" ,"LOCK" ,"UNLOCK" ,
191+
192+ /* SQL Functions and Operators */
193+ "TRUE|" ,"FALSE|" ,"UNKNOWN|" ,NULL
194+ };
195+
196+ /* ======================= Rust ============================================= */
197+
198+ char * Rust_HL_extensions [] = {".rs" ,".rlib" ,NULL };
199+ char * Rust_HL_keywords [] = {
200+ /* Rust Keywords */
201+ "as" ,"async" ,"await" ,"break" ,"const" ,"continue" ,"crate" ,"dyn" ,"else" ,
202+ "enum" ,"extern" ,"false" ,"fn" ,"for" ,"if" ,"impl" ,"in" ,"let" ,"loop" ,
203+ "match" ,"mod" ,"move" ,"mut" ,"pub" ,"ref" ,"return" ,"self" ,"Self" ,"static" ,
204+ "struct" ,"super" ,"trait" ,"true" ,"type" ,"unsafe" ,"use" ,"where" ,"while" ,
205+ "abstract" ,"become" ,"box" ,"do" ,"final" ,"macro" ,"override" ,"priv" ,
206+ "typeof" ,"unsized" ,"virtual" ,"yield" ,"try" ,"union" ,"catch" ,"default" ,
207+
208+ /* Rust Types */
209+ "i8|" ,"i16|" ,"i32|" ,"i64|" ,"i128|" ,"isize|" ,"u8|" ,"u16|" ,"u32|" ,"u64|" ,
210+ "u128|" ,"usize|" ,"f32|" ,"f64|" ,"bool|" ,"char|" ,"str|" ,"String|" ,"Vec|" ,
211+ "HashMap|" ,"HashSet|" ,"BTreeMap|" ,"BTreeSet|" ,"Option|" ,"Result|" ,"Box|" ,
212+ "Rc|" ,"Arc|" ,"RefCell|" ,"Cell|" ,"Mutex|" ,"RwLock|" ,"thread|" ,"Clone|" ,
213+ "Copy|" ,"Send|" ,"Sync|" ,"Drop|" ,"Display|" ,"Debug|" ,"Default|" ,"PartialEq|" ,
214+ "Eq|" ,"PartialOrd|" ,"Ord|" ,"Hash|" ,"Iterator|" ,"IntoIterator|" ,NULL
215+ };
216+
217+ /* ======================= Shell ============================================ */
218+
219+ char * Shell_HL_extensions [] = {
220+ ".sh" ,".bash" ,".zsh" ,".ksh" ,".csh" ,".tcsh" ,
221+ ".profile" ,".bashrc" ,".bash_profile" ,".bash_login" ,
222+ ".zshrc" ,".zshenv" ,".zlogin" ,".zprofile" ,
223+ NULL
224+ };
225+ char * Shell_HL_keywords [] = {
226+ /* Shell Keywords */
227+ "if" ,"then" ,"else" ,"elif" ,"fi" ,"case" ,"esac" ,"for" ,"while" ,
228+ "until" ,"do" ,"done" ,"select" ,"function" ,"in" ,"time" ,"coproc" ,
229+
230+ /* Common commands */
231+ "alias|" ,"bg|" ,"bind|" ,"break|" ,"builtin|" ,"caller|" ,"cd|" ,
232+ "command|" ,"compgen|" ,"complete|" ,"continue|" ,"declare|" ,
233+ "dirs|" ,"disown|" ,"echo|" ,"enable|" ,"eval|" ,"exec|" ,"exit|" ,
234+ "export|" ,"false|" ,"fc|" ,"fg|" ,"getopts|" ,"hash|" ,"help|" ,
235+ "history|" ,"jobs|" ,"kill|" ,"let|" ,"local|" ,"logout|" ,"mapfile|" ,
236+ "popd|" ,"printf|" ,"pushd|" ,"pwd|" ,"read|" ,"readarray|" ,
237+ "readonly|" ,"return|" ,"set|" ,"shift|" ,"shopt|" ,"source|" ,
238+ "suspend|" ,"test|" ,"times|" ,"trap|" ,"true|" ,"type|" ,"typeset|" ,
239+ "ulimit|" ,"umask|" ,"unalias|" ,"unset|" ,"wait|" ,
240+
241+ /* System utilities */
242+ "awk|" ,"cat|" ,"chmod|" ,"chown|" ,"cp|" ,"curl|" ,"cut|" ,"date|" ,
243+ "df|" ,"diff|" ,"dig|" ,"du|" ,"find|" ,"grep|" ,"head|" ,"ln|" ,"ls|" ,
244+ "mkdir|" ,"mv|" ,"ping|" ,"ps|" ,"rm|" ,"rsync|" ,"scp|" ,"sed|" ,
245+ "ssh|" ,"sudo|" ,"tail|" ,"tar|" ,"top|" ,"touch|" ,"tr|" ,"uniq|" ,
246+ "wc|" ,"wget|" ,"which|" ,"xargs|" ,
247+
248+ /* Special variables */
249+ "$BASH|" ,"$BASHOPTS|" ,"$BASHPID|" ,"$BASH_ALIASES|" ,
250+ "$BASH_ARGC|" ,"$BASH_ARGV|" ,"$BASH_CMDS|" ,"$BASH_COMMAND|" ,
251+ "$BASH_ENV|" ,"$BASH_LINENO|" ,"$BASH_SOURCE|" ,"$BASH_SUBSHELL|" ,
252+ "$BASH_VERSION|" ,"$DIRSTACK|" ,"$EUID|" ,"$FUNCNAME|" ,
253+ "$GROUPS|" ,"$HOME|" ,"$HOSTNAME|" ,"$HOSTTYPE|" ,"$IFS|" ,
254+ "$LINENO|" ,"$MACHTYPE|" ,"$OLDPWD|" ,"$OPTARG|" ,"$OPTIND|" ,
255+ "$OSTYPE|" ,"$PATH|" ,"$PIPESTATUS|" ,"$PPID|" ,"$PS1|" ,
256+ "$PS2|" ,"$PS3|" ,"$PS4|" ,"$PWD|" ,"$RANDOM|" ,"$REPLY|" ,
257+ "$SECONDS|" ,"$SHELL|" ,"$SHELLOPTS|" ,"$SHLVL|" ,"$UID|" ,
258+ NULL
259+ };
260+
107261/* ======================= Language Database ================================ */
108262
109263/* Array of syntax highlights by extensions, keywords, comments delimiters and flags. */
@@ -152,6 +306,60 @@ struct t_editor_syntax HLDB[] = {
152306 "" , /* No separators */
153307 0 , /* No flags */
154308 HL_TYPE_MARKDOWN
309+ },
310+ {
311+ /* JavaScript */
312+ JavaScript_HL_extensions ,
313+ JavaScript_HL_keywords ,
314+ "//" ,"/*" ,"*/" ,
315+ ",.()+-/*=~%<>[]{}:;&|!?" , /* Separators */
316+ HL_HIGHLIGHT_STRINGS | HL_HIGHLIGHT_NUMBERS ,
317+ HL_TYPE_C
318+ },
319+ {
320+ /* TypeScript */
321+ TypeScript_HL_extensions ,
322+ TypeScript_HL_keywords ,
323+ "//" ,"/*" ,"*/" ,
324+ ",.()+-/*=~%<>[]{}:;&|!?" , /* Separators */
325+ HL_HIGHLIGHT_STRINGS | HL_HIGHLIGHT_NUMBERS ,
326+ HL_TYPE_C
327+ },
328+ {
329+ /* Swift */
330+ Swift_HL_extensions ,
331+ Swift_HL_keywords ,
332+ "//" ,"/*" ,"*/" ,
333+ ",.()+-/*=~%<>[]{}:;&|!?" , /* Separators */
334+ HL_HIGHLIGHT_STRINGS | HL_HIGHLIGHT_NUMBERS ,
335+ HL_TYPE_C
336+ },
337+ {
338+ /* SQL */
339+ SQL_HL_extensions ,
340+ SQL_HL_keywords ,
341+ "--" ,"/*" ,"*/" ,
342+ ",.()+-/*=~%<>[]{}:;" , /* Separators */
343+ HL_HIGHLIGHT_STRINGS | HL_HIGHLIGHT_NUMBERS ,
344+ HL_TYPE_C
345+ },
346+ {
347+ /* Rust */
348+ Rust_HL_extensions ,
349+ Rust_HL_keywords ,
350+ "//" ,"/*" ,"*/" ,
351+ ",.()+-/*=~%<>[]{}:;&|!?" , /* Separators */
352+ HL_HIGHLIGHT_STRINGS | HL_HIGHLIGHT_NUMBERS ,
353+ HL_TYPE_C
354+ },
355+ {
356+ /* Shell */
357+ Shell_HL_extensions ,
358+ Shell_HL_keywords ,
359+ "#" ,"" ,"" , /* Shell uses # for comments, no block comments */
360+ ",.()+-/*=~%<>[]{}:;&|!?$" , /* Separators (note: $ included for variables) */
361+ HL_HIGHLIGHT_STRINGS | HL_HIGHLIGHT_NUMBERS ,
362+ HL_TYPE_C
155363 }
156364};
157365
0 commit comments