1
0
mirror of https://github.com/cmur2/joe-syntax.git synced 2024-11-01 00:56:15 +01:00
joe-syntax/ruby.jsf

515 lines
7.9 KiB
Plaintext
Raw Normal View History

# JOE syntax highlight file for Ruby
# Oh No! It's another perl!
# <<EOF1, <<EOF2 is not working. Only EOF1 is seen. It should wait for the
# EOF2.
=Idle
2011-08-02 18:52:46 +02:00
=Comment green
=CommentLabel bold green
=POD green
=Constant cyan
=Escape bold cyan
=Type bold
=Keyword bold
=Bad bold red
=Var yellow
=Brace magenta
=Symbol red
=ProcArg #yellow
=ClassMember fg_310 # brown
=GlobalVar yellow
# Detect pod
:idle Idle
* rest noeat
"=" pod_start
# Rest of line
:rest Idle
* rest
2011-08-02 18:52:46 +02:00
"#" line_comment recolor=-1
"\n" idle
2011-08-01 10:41:02 +02:00
"{}" brace recolor=-1
"0" first_digit recolor=-1
2011-08-01 11:21:59 +02:00
"1-9" decimal recolor=-1
"." maybe_float
"\"" string recolor=-1
"'" char recolor=-1
"`" backtick recolor=-1
"/" regex recolor=-1
"<" maybe_inc
"$" not_string buffer
"%" pstring
"a-zA-Z_" ident buffer
2011-08-01 10:32:23 +02:00
# higher level, ruby specific
":" maybe_symbol noeat
"|" proc_arg
"@" class_member1
# / / regex not allowed after terms
:after_term Idle
2011-08-06 12:29:43 +02:00
* rest noeat
" \t)" after_term
"/%" rest
:pod_start Idle
* pod_start
"\n" pod_block
:pod_block POD
* pod_block
"=" pod_ident buffer
:pod_ident POD
* pod_block noeat strings
"=end" rest
done
"a-zA-Z0-9_" pod_ident
:maybe_inc Idle
2011-08-06 12:29:43 +02:00
* after_term noeat
"<" maybe_inc1
:maybe_inc1 Idle
2011-08-06 12:29:43 +02:00
* after_term noeat
"-" allow_space
"'\"" quoted_inc_start save_c recolor=-1
"A-Za-z_" inc buffer noeat
:allow_space Idle
2011-08-06 12:29:43 +02:00
* after_term noeat
"'\"" quoted_inc_start_allow save_c recolor=-1
2011-08-06 12:29:43 +02:00
"A-Za-z_" inc_allow buffer noeat
:quoted_inc_start Var
* quoted_inc buffer
:quoted_inc_start_allow Var
* quoted_inc_allow buffer
:quoted_inc Var
* quoted_inc
& skipline save_s
:quoted_inc_allow Var
* quoted_inc_allow
& skipline_allow save_s
:inc Var
* skipline save_s noeat
"A-Za-z0-9_" inc
:inc_allow Var
* skipline_allow save_s noeat
"A-Za-z0-9_" inc_allow
# Should be treated as a normal line here...
:skipline Idle
* skipline
"\n" next_line
:skipline_allow Idle
* skipline_allow
"\n" next_line_allow
:todelim Constant
* todelim
"\n" next_line strings
"&" founddelim
done
:todelim_allow Constant
* todelim_allow
"\n" next_line_allow strings
"&" founddelim
done
# eat \n so it's not in string.
:next_line Constant
* todelim buffer
"\n" next_line
:next_line_allow Constant
* todelim_allow buffer
2011-08-06 12:29:43 +02:00
" \t\n" next_line_allow
:founddelim Var
* idle noeat
:regex Constant
* regex
"\\" regex_quote recolor=-1
"/" after_term
:regex_quote Escape
* regex
:not_string Idle
* rest noeat
"A-Za-z_" global_var recolor=-2
"\"'`#/" rest
2011-08-01 10:32:23 +02:00
:brace Brace
2011-08-01 10:38:51 +02:00
* rest noeat
2011-08-01 10:32:23 +02:00
:line_comment Comment
* line_comment
2011-08-02 18:52:46 +02:00
# might be TODO label
"BFHNTX" line_comment noeat call=.comment_todo()
"\n" idle
:end_of_file_comment Comment
* end_of_file_comment
:first_digit Constant
* after_term noeat
"x" hex
"b" binary
"." float
"eE" epart
"0-7" octal
"89" bad_number recolor=-1
:bad_number Bad
* after_term noeat
"0-9" bad_number
:octal Constant
* after_term noeat
"0-7_" octal
"89" bad_number recolor=-1
:binary Constant
* after_term noeat
"01_" binary
"2-9" bad_number recolor=-1
:hex Constant
* after_term noeat
"0-9A-Fa-f_" hex
:decimal Constant
* after_term noeat
"0-9_" decimal
"eE" epart
"." float
:maybe_float Constant
2011-08-06 12:29:43 +02:00
* after_term noeat recolor=-2
"0-9" float recolor=-2
:float Constant
* after_term noeat
"eE" epart
"0-9_" float
:epart Constant
* after_term noeat
"0-9+\-" enum
:enum Constant
* after_term noeat
"0-9_" enum
:string Constant
* string
"\"" after_term
"\\" string_escape recolor=-1
"#" maybe_string_subst recolor=-1
:maybe_string_subst Constant
* string
"{" string_subst recolor=-2
:string_subst Escape
* string_subst
"}" string
:string_escape Escape
* string
"x" string_hex1
"c" string_ctrl
"N" string_named
"0-7" string_octal2
"\n" string recolor=-2
:string_named Escape
* string
"{" string_named_rest
:string_named_rest Escape
* string_named_rest
"}" string
:string_ctrl Escape
* string
:string_hex1 Escape
* string noeat
"{" string_unicode
"0-9a-fA-F" string_hex2
:string_unicode Escape
* string_unicode
"}" string
: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
# Only \\ and \' allowed in single quoted strings
:char Constant
* char
"\n" reset
"'" after_term
"\\" char_escape recolor=-1
:char_escape Escape
* char recolor=-2
"\\'" char
:backtick Constant
* backtick
"`" after_term
"\\" backtick_escape recolor=-1
2011-08-06 12:29:43 +02:00
"$@" backtick_subst recolor=-1
:backtick_subst Escape
* backtick noeat recolor=-1
"a-zA-Z_0-9" backtick_subst
:backtick_escape Escape
* backtick
"x" backtick_hex1
"c" backtick_ctrl
"N" backtick_named
"0-7" backtick_octal2
2011-08-06 12:29:43 +02:00
"\n" backtick recolor=-2
:backtick_named Escape
* backtick
"{" backtick_named_rest
:backtick_named_rest Escape
* backtick_named_rest
"}" backtick
:backtick_ctrl Escape
* backtick
:backtick_hex1 Escape
2011-08-06 12:29:43 +02:00
* backtick noeat
"{" backtick_unicode
"0-9a-fA-F" backtick_hex2
:backtick_unicode Escape
* backtick_unicode
"}" backtick
:backtick_hex2 Escape
2011-08-06 12:29:43 +02:00
* backtick noeat
"0-9a-fA-F" backtick
:backtick_octal2 Escape
2011-08-06 12:29:43 +02:00
* backtick noeat
"0-7" backtick_octal3
:backtick_octal3 Escape
2011-08-06 12:29:43 +02:00
* backtick noeat
"0-7" backtick
:ident Idle
* after_term noeat strings
"BEGIN" kw
"END" kw
"alias" kw
"and" kw
"begin" kw
"break" kw
"case" kw
"class" kw
"def" kw
"defined" kw
"do" kw
"else" kw
"elsif" kw
"end" kw
"ensure" kw
"false" kw
"for" kw
"if" kw
"in" kw
"module" kw
"next" kw
"nil" kw
"not" kw
"or" kw
"redo" kw
"rescue" kw
"retry" kw
"return" kw
"self" kw
"super" kw
"then" kw
"true" kw
"undef" kw
"unless" kw
"until" kw
"when" kw
"while" kw
"yield" kw
# quasi-keywords (Module or Kernel methods)
"require" kw
"include" kw
"puts" kw
"exit" kw
"attr_accessor" kw
"attr_reader" kw
"attr_writer" kw
done
"a-zA-Z0-9_" ident
:kw Keyword
2011-08-06 12:29:43 +02:00
* rest noeat
:pstring Idle
2011-08-06 12:29:43 +02:00
* match noeat
" \t" after_term noeat
"xrqQw" match
:match Idle
* inmatch save_c recolor=-1
2011-08-06 12:29:43 +02:00
" \t" match
:inmatch Constant
* inmatch
& after_term
"\\" inmatch_quote recolor=-1
:inmatch_quote Escape
* inmatch
:subst Idle
* insubst save_c recolor=-1
"<([{`" delim_insubst save_c recolor=-1
2011-08-06 12:29:43 +02:00
" \t" subst
:insubst Constant
* insubst
& inrepl
"\\" insubst_quote recolor=-1
:insubst_quote Escape
* insubst
:inrepl Constant
* inrepl
& after_term
"\\" inrepl_quote
:inrepl_quote Escape
* inrepl
:delim_insubst Constant
* delim_insubst
& delim_repl
"\\" delim_quote
:delim_quote Escape
* delim_insubst
:delim_repl Constant
* repl save_c recolor=-1
2011-08-06 12:29:43 +02:00
" \t" delim_repl
:repl Constant
* repl
& after_term
"\\" repl_quote
:repl_quote Escape
* repl
:maybe_symbol Idle
2011-08-01 11:21:59 +02:00
* rest noeat
":" maybe_symbol2
:maybe_symbol2 Idle
2011-08-01 11:21:59 +02:00
* rest noeat
# prevent wrong Module::Member detection
2011-08-01 11:21:59 +02:00
":" rest
# first char mustn't be 0-9
"a-zA-Z_" symbol
# # might be a :"symbol"
# "\""
:symbol Symbol
2011-08-01 11:21:59 +02:00
* rest noeat
"a-zA-Z0-9_" symbol recolor=-3
:proc_arg ProcArg
2011-08-01 11:21:59 +02:00
* rest noeat
"," proc_arg_sep noeat
"a-zA-Z_" proc_arg
:proc_arg_sep Idle
* proc_arg
:class_member1 Idle
2011-08-01 11:21:59 +02:00
* rest noeat
"a-zA-Z_" class_member recolor=-2
"@" class_member2
:class_member2 ClassMember
2011-08-01 11:21:59 +02:00
* rest noeat
"a-zA-Z_" class_member recolor=-3
:class_member ClassMember
2011-08-01 11:21:59 +02:00
* rest noeat
"a-zA-Z0-9_" class_member
2011-08-02 18:52:46 +02:00
:global_var GlobalVar
* rest noeat
"a-zA-Z0-9_" global_var
2011-08-02 18:52:46 +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