1
0
mirror of https://github.com/cmur2/joe-syntax.git synced 2026-07-12 04:39:56 +02:00
Files
joe-syntax/js.jsf
T

374 lines
6.3 KiB
Plaintext
Raw Normal View History

2011-08-05 23:45:04 +02:00
# JOE syntax highlight file for JavaScript
# the real one - not a pimped Java file...
# just getting this idea seams crazy...
2011-08-06 00:39:04 +02:00
# TODO: regex escape highlighter ignored \x (and other?) sequences
2011-08-05 23:45:04 +02:00
=Idle
=Comment green
=CommentLabel bold green
=Constant cyan
=Escape bold cyan
=Type bold
=Keyword bold
=Global bold
=Exports bold black
2011-08-05 23:45:04 +02:00
=Operator bold
=Bad inverse bold red
2011-08-05 23:45:04 +02:00
=Brace magenta
2011-08-06 14:16:29 +02:00
=Control
2011-08-05 23:45:04 +02:00
2011-08-06 00:39:04 +02:00
# additional classes not present everywhere but useful
2011-08-05 23:45:04 +02:00
=Methods
2011-08-06 00:39:04 +02:00
=Number cyan #fg_520 # orange
2011-08-05 23:45:04 +02:00
# from html.jsf to support <?php?>
=TagEdge green
:begin Idle
* begin noeat call=.js()
.subr js
2011-08-05 23:45:04 +02:00
:idle Idle
* idle
"\n" idle
"/" slash
"0" first_digit recolor=-1
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"a-zA-Z_" ident mark buffer
"{}" brace recolor=-1
.ifdef html
",:;=()>[]*&|!?~+\-%^" control recolor=-1
"<" maybe_done recolor=-1
.else
.ifdef php
",:;=()>[]*&|!?~+\-%^" control recolor=-1
"<" maybe_done recolor=-1
.else
",:;=()><[]*&|!?~+\-%^" control recolor=-1
.endif
.endif
# / / regex not allowed after terms
# class Control to handle ')' right
:after_term Control
* idle noeat
" \t)" after_term
2011-08-06 14:16:29 +02:00
"%" control recolor=-1
"/" after_term_slash
2011-08-05 23:45:04 +02:00
:maybe_done TagEdge
* idle noeat
"/" idle noeat return recolor=-2
.ifdef php
"?%" rtn_php call=php.php()
.endif
# this state allows php and perl to recolor the ?> %> or &> properly.
:rtn_php TagEdge
* idle noeat
2011-08-05 23:45:04 +02:00
:brace Brace
* idle noeat
:control Control
* idle noeat
:slash Idle
* regex noeat recolor=-2
2011-08-05 23:45:04 +02:00
"*" comment recolor=-2
"/" line_comment recolor=-2
2011-08-06 14:16:29 +02:00
# allow // and /* after terms
:after_term_slash Idle
* idle noeat
"*" comment recolor=-2
"/" line_comment recolor=-2
2011-08-05 23:45:04 +02:00
:comment Comment
* comment
# might be TODO label
"BFHNTX" comment noeat call=.comment_todo()
"*" maybe_end_comment
:maybe_end_comment Comment
* comment noeat
"/" idle
"*" maybe_end_comment
:line_comment Comment
* line_comment
# might be TODO label
"BFHNTX" line_comment noeat call=.comment_todo()
"\n" idle
:regex Constant
* regex
"\\" regex_quote recolor=-1
"/" regex_mod
:regex_quote Escape
* regex
:regex_mod Constant
* after_term noeat
"igm" regex_mod
2011-08-06 00:39:04 +02:00
:first_digit Number
* after_term noeat
2011-08-05 23:45:04 +02:00
"xX" hex
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* after_term noeat
2011-08-05 23:45:04 +02:00
"0-9" bad_number
2011-08-06 00:39:04 +02:00
:octal Number
* after_term noeat
2011-08-05 23:45:04 +02:00
"0-7" octal
"89" bad_number recolor=-1
2011-08-06 00:39:04 +02:00
:hex Number
* after_term noeat
2011-08-05 23:45:04 +02:00
"0-9A-Fa-f" hex
2011-08-06 00:39:04 +02:00
:decimal Number
* after_term noeat
2011-08-05 23:45:04 +02:00
"0-9" decimal
"eE" epart
"." float
2011-08-06 00:39:04 +02:00
:maybe_float Number
* after_term recolor=-2 noeat
2011-08-05 23:45:04 +02:00
"0-9" float recolor=-2
2011-08-06 00:39:04 +02:00
:float Number
* after_term noeat
2011-08-05 23:45:04 +02:00
"eE" epart
"0-9" float
2011-08-06 00:39:04 +02:00
:epart Number
* after_term noeat
2011-08-05 23:45:04 +02:00
"0-9+\-" enum
2011-08-06 00:39:04 +02:00
:enum Number
* after_term noeat
2011-08-05 23:45:04 +02:00
"0-9" enum
:string Constant
* string
"\"" after_term
2011-08-05 23:45:04 +02:00
"\\" string_escape recolor=-1
"%" string_control recolor=-1
:string_escape Escape
* string
"x" string_hex1
"0-7" string_octal2
"\n" string recolor=-2
:string_hex1 Escape
* string noeat
"0-9a-fA-F" string_hex2
:string_hex2 Escape
* string noeat
"0-9a-fA-F" string
:string_octal2 Escape
* string noeat
"0-7" string_octal3
:string_octal3 Escape
* string noeat
"0-7" string
:string_control Escape
* string_control
"\n" reset
"diouxXeEfFgGaAcspn%SC" string
:char Constant
* char
"\n" reset
"'" after_term
2011-08-05 23:45:04 +02:00
"\\" char_escape recolor=-1
:char_escape Escape
* char
"x" char_hex1
"0-7" char_octal2
"\n" char recolor=-2
:char_hex1 Escape
* char noeat
"0-9a-fA-F" char_hex2
:char_hex2 Escape
* char noeat
"0-9a-fA-F" char
:char_octal2 Escape
* char noeat
"0-7" char_octal3
:char_octal3 Escape
* char noeat
"0-7" char
:ident Idle
* ident_end noeat markend strings
"arguments" kw
"Array" type
"ArrayBuffer" type
2011-08-05 23:45:04 +02:00
"break" kw
"Boolean" type
"case" kw
"catch" kw
"const" global
2011-08-05 23:45:04 +02:00
"continue" kw
"DataView" type
"decodeURI" global
"decodeURIComponent" global
2011-08-05 23:45:04 +02:00
"default" kw
"delete" operator
"do" kw
"Date" type
"else" kw
"encodeURI" global
"encodeURIComponent" global
"Error" type
"escape" global
"eval" global
"EvalError" type
2011-08-05 23:45:04 +02:00
"false" lit
"finally" kw
"for" kw
"function" kw
"Function" type
"Float32Array" type
"Float64Array" type
2011-08-05 23:45:04 +02:00
"if" kw
"in" kw
"Infinity" lit
2011-08-05 23:45:04 +02:00
"instanceof" operator
"Int16Array" type
"Int32Array" type
"Int8Array" type
"isFinite" global
"isNaN" global
"JSON" type
2011-08-05 23:45:04 +02:00
"let" kw
"Math" type
"NaN" lit
2011-08-05 23:45:04 +02:00
"new" operator
"null" lit
"Number" type
"Object" type
"parseFloat" global
"parseInt" global
2011-08-05 23:45:04 +02:00
"return" kw
"RangeError" type
"ReferenceError" type
2011-08-05 23:45:04 +02:00
"RegExp" type
"switch" kw
"String" type
"SyntaxError" type
2011-08-05 23:45:04 +02:00
"this" kw
"throw" kw
"true" lit
"try" kw
"typeof" operator
"TypeError" type
"Uint16Array" type
"Uint32Array" type
"Uint8Array" type
"Uint8ClampedArray" type
2011-08-05 23:45:04 +02:00
"undefined" lit
"unescape" global
"URIError" type
2011-08-05 23:45:04 +02:00
"var" kw
"void" kw
"while" kw
"with" kw
# quasi-keywords
"prototype" kw
# Node.js
"module" global
"exports" export
"process" global
"global" global
"console" global
"setTimeout" global
"setInterval" global
"clearInterval" global
"Buffer" type
# Node.js globals that we'll pretend are keywords
"require" kw
"__filename" kw
"__dirname" kw
# By convention...
"self" kw
2011-08-05 23:45:04 +02:00
done
"a-zA-Z0-9_" ident
:type Type
* after_term noeat
2011-08-05 23:45:04 +02:00
:kw Keyword
* idle noeat
:global Global
* idle noeat
:export Exports
* idle noeat
2011-08-05 23:45:04 +02:00
:lit Constant
* after_term noeat
2011-08-05 23:45:04 +02:00
:operator Operator
* idle noeat
:ident_end Idle
* after_term noeat
2011-08-05 23:45:04 +02:00
" " ident_end
2011-08-06 00:39:04 +02:00
"(" method_end noeat recolormark
2011-08-05 23:45:04 +02:00
:method_end Methods
* idle noeat
.end
2011-08-05 23:45:04 +02:00
.subr comment_todo
# initial state
:comment_todo_init Comment
* comment_todo_guess buffer
# highlight common TODO labels
:comment_todo_guess Comment
* comment_todo_unknown noeat strings
"BUG" comment_todo
"FIXME" comment_todo
"HACK" comment_todo
"NOTE" comment_todo
"TODO" comment_todo
"XXX" comment_todo
done
"A-Z" comment_todo_guess
:comment_todo_unknown Comment
* NULL noeat return
:comment_todo CommentLabel
* NULL noeat return
.end