joe/syntax/elixir.jsf
2024-10-16 10:58:52 +08:00

240 lines
3.9 KiB
Plaintext

# JOE syntax highlight file for Elixir
# Written by Andrey Lisin (at gmail.com)
# TODO
# - test attributes and docstrings highlighting
# - maybe highlight arithmetical operations
# - comprehensions highlighting
# Changes
# - fix atom with underscore highlighting
# - distinct docstrings and module attributes
=Idle
=Ident
=Comment
=Keyword
=Statement +Keyword
=Conditional +Statement
=Type
=DefinedIdent +Ident
=DefinedType +DefinedIdent
=DefinedFunction +DefinedIdent
=Operator +Keyword
=Constant
=Boolean +Constant
=Number +Constant
=String +Constant
=StringEscape +Escape
=StringVariable +StringEscape
=Atom +Constant +DefinedIdent
=Attribute +Define +Preproc
=Brace +Escape
=Bracket +Brace
=Underscore +Keyword
=ModAttr +Atom # key in %{key: value}
:idle Idle
* idle
"#" line_comment noeat
"A-Z" type recolor=-1
"a-z" ident noeat
"_" underscore recolor=-1
"'" single_quoted recolor=-1
"\"" double_quoted recolor=-1
":" atom recolor=-1
"@" modattr recolor=-1
"[]" brack recolor=-1
"{}" brace recolor=-1
"|" maybe_pipe
"\\" maybe_opt
"-" maybe_rarrow recolor=-1
"<" maybe_larrow recolor=-1
"0-9" decimal recolor=-1
:line_comment Comment comment
* line_comment
"BFHNTX" line_comment noeat call=comment_todo.comment_todo()
"\n" idle
:single_quoted String string
* single_quoted
"'" idle
:double_quoted String string
* double_quoted
"#" maybe_extrapolation
"\"" idle
:maybe_extrapolation String string
* double_quoted noeat
"{" extrapolation recolor=-2
:extrapolation StringVariable string
* extrapolation
"}" double_quoted
"\"" double_quoted noeat
:atom Atom
* idle noeat
"a-zA-Z0-9_" atom
:modattr ModAttr
* idle
"a-zA-Z0-9_" modattr
" " maybe_edoc
:maybe_edoc Idle
* idle
" " maybe_edoc
"\"" string_dq_1 recolor=-1
:string_dq_1 String string
* double_quoted recolor=-1
"\"" string_dq_2
:string_dq_2 Comment comment
* idle
"\"" docstr_dq recolor=-3
:docstr_dq Comment comment
* docstr_dq
"\"" docstr_dq_1
:docstr_dq_1 Comment comment
* docstr_dq
"\"" docstr_dq_2
:docstr_dq_2 Comment comment
* docstr_dq
"\"" idle
:brace Brace
* idle noeat
:brack Bracket
* idle noeat
:maybe_larrow Idle
"-" arrow recolor=-2
* idle noeat
:maybe_rarrow Idle
">" arrow recolor=-2
* idle noeat
:arrow Operator
* idle noeat
:maybe_pipe Idle
* idle
">" pipe recolor=-2
:pipe Operator
* idle noeat
:maybe_opt Idle
* idle
"\\" opt recolor=-2
:opt Keyword
* idle noeat
:decimal Number
* idle noeat
"0-9_" decimal
"." float
:float Number
* idle noeat
"0-9" float
:underscore Underscore
* idle noeat
"a-zA-Z0-9?_" underscore
:type Type
"a-zA-Z0-9_" type
* idle noeat
:ident Ident
* ident1 noeat buffer mark
:ident1 Ident
* idle noeat strings
"def" start_func_def
"defp" start_func_def
"defmodule" start_mod_def
"defprotocol" start_def
"defmacro" start_def
"defmacrop" start_def
"defdelegate" start_def
"defexception" start_def
"defstruct" start_def
"defimpl" start_def
"defcallback" start_def
"import" start_mod_def
"require" start_mod_def
"test" start_def
"use" start_mod_def
"alias" start_mod_def
"end" stmt
"do" kw
"for" loop
"if" cond
"else" cond
"unless" cond
"case" cond
"cond" cond
"true" bool
"false" bool
"fn" kw
done
"a-zA-Z_0-9" ident1
":" attr noeat recolormark
:attr Attribute
* idle
:kw Keyword
* idle noeat
:stmt Statement
* idle noeat
:cond Conditional
* idle noeat
:bool Boolean
* idle noeat
:start_def Statement
* def
:start_mod_def Statement
* moddef
:start_func_def Statement
* funcdef
:def DefinedIdent
* def
" (" idle noeat
:funcdef DefinedFunction
* funcdef
" (" idle noeat
:moddef DefinedType
* moddef
" " idle noeat
"\n" idle