xref: /vim-8.2.3635/runtime/syntax/erlang.vim (revision 00a927d6)
1" Vim syntax file
2" Language:    erlang (ERicsson LANGuage)
3"              http://www.erlang.se
4"              http://www.erlang.org
5" Maintainer:  Csaba Hoch <[email protected]>
6" Former Maintainer:  Kreąimir Marľić (Kresimir Marzic) <[email protected]>
7" Last update: 12-Mar-2008
8" Filenames:   .erl
9
10
11" There are three sets of highlighting in here:
12" One is "erlang_characters", second is "erlang_functions" and third
13" is "erlang_keywords".
14" If you want to disable keywords highlighting, put in your .vimrc:
15"       let erlang_keywords=1
16" If you want to disable erlang BIF highlighting, put in your .vimrc
17" this:
18"       let erlang_functions=1
19" If you want to disable special characters highlighting, put in
20" your .vimrc:
21"       let erlang_characters=1
22
23
24" For version 5.x: Clear all syntax items
25" For version 6.x: Quit when a syntax file was already loaded
26if version < 600
27    syntax clear
28elseif exists ("b:current_syntax")
29    finish
30endif
31
32
33" Case sensitive
34syn case match
35
36
37if ! exists ("erlang_characters")
38
39    " Basic elements
40    syn match   erlangComment          "%.*$" contains=erlangAnnotation,erlangTodo
41    syn match   erlangAnnotation       " \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|private\|equiv\|spec\|throws\)" contained
42    syn match   erlangAnnotation       "`[^']*'" contained
43    syn keyword erlangTodo             TODO FIXME XXX contained
44    syn match   erlangModifier         "\~\a\|\\\a\|\\\\" contained
45    syn match   erlangSpecialCharacter ":\|_\|@\|\\\|\"\|\."
46    syn match   erlangSeparator        "(\|)\|{\|}\|\[\|]\||\|||\|;\|,\|?\|->\|#" contained
47    syn region  erlangString           start=+"+ skip=+\\.+ end=+"+ contains=erlangModifier
48    syn region  erlangAtom             start=+'+ skip=+\\'+ end=+'+
49
50    " Operators
51    syn match   erlangOperator         "+\|-\|\*\|\/"
52    syn keyword erlangOperator         div rem or xor bor bxor bsl bsr
53    syn keyword erlangOperator         and band not bnot andalso orelse
54    syn match   erlangOperator         "==\|/=\|=:=\|=/=\|<\|=<\|>\|>="
55    syn match   erlangOperator         "++\|--\|=\|!\|<-"
56
57    " Numbers
58    syn match   erlangNumberInteger    "\d\+" contains=erlangSeparator
59    syn match   erlangNumberFloat1     "\d\+\.\d\+" contains=erlangSeparator
60    syn match   erlangNumberFloat2     "\d\+\(\.\d\+\)\=[eE][+-]\=\d\+\(\.\d\+\)\=" contains=erlangSeparator
61    syn match   erlangNumberFloat3     "\d\+[#]\x\+" contains=erlangSeparator
62    syn match   erlangNumberHex        "$\x\+" contains=erlangSeparator
63
64    " Ignore '_' and '-' in words
65    syn match   erlangWord             "\h\+\w*"
66
67    syn match   erlangChar             /\$./
68endif
69
70if ! exists ("erlang_functions")
71    " Functions call
72    syn match   erlangFCall      "\%(\w\+\s*\.\s*\)*\w\+\s*[:@]\s*\w\+"
73
74    " build-in-functions (BIFs)
75    syn keyword erlangBIF        abs alive apply atom_to_list
76    syn keyword erlangBIF        binary_to_list binary_to_term
77    syn keyword erlangBIF        concat_binary
78    syn keyword erlangBIF        date disconnect_node
79    syn keyword erlangBIF        element erase exit
80    syn keyword erlangBIF        float float_to_list
81    syn keyword erlangBIF        get get_keys group_leader
82    syn keyword erlangBIF        halt hd
83    syn keyword erlangBIF        integer_to_list is_alive
84    syn keyword erlangBIF        length link list_to_atom list_to_binary
85    syn keyword erlangBIF        list_to_float list_to_integer list_to_pid
86    syn keyword erlangBIF        list_to_tuple load_module
87    syn keyword erlangBIF        make_ref monitor_node
88    syn keyword erlangBIF        node nodes now
89    syn keyword erlangBIF        open_port
90    syn keyword erlangBIF        pid_to_list process_flag
91    syn keyword erlangBIF        process_info process put
92    syn keyword erlangBIF        register registered round
93    syn keyword erlangBIF        self setelement size spawn
94    syn keyword erlangBIF        spawn_link split_binary statistics
95    syn keyword erlangBIF        term_to_binary throw time tl trunc
96    syn keyword erlangBIF        tuple_to_list
97    syn keyword erlangBIF        unlink unregister
98    syn keyword erlangBIF        whereis
99
100    " Other BIFs
101    syn keyword erlangBIF        atom binary constant function integer
102    syn keyword erlangBIF        list number pid ports port_close port_info
103    syn keyword erlangBIF        reference record
104
105    " erlang:BIFs
106    syn keyword erlangBIF        check_process_code delete_module
107    syn keyword erlangBIF        get_cookie hash math module_loaded
108    syn keyword erlangBIF        preloaded processes purge_module set_cookie
109    syn keyword erlangBIF        set_node
110
111    " functions of math library
112    syn keyword erlangFunction   acos asin atan atan2 cos cosh exp
113    syn keyword erlangFunction   log log10 pi pow power sin sinh sqrt
114    syn keyword erlangFunction   tan tanh
115
116    " Other functions
117    syn keyword erlangFunction   call module_info parse_transform
118    syn keyword erlangFunction   undefined_function
119
120    " Modules
121    syn keyword erlangModule     error_handler
122endif
123
124if ! exists ("erlang_keywords")
125    " Constants and Directives
126    syn match   erlangDirective  "-behaviour\|-behavior"
127    syn match   erlangDirective  "-compile\|-define\|-else\|-endif\|-export\|-file"
128    syn match   erlangDirective  "-ifdef\|-ifndef\|-import\|-include_lib\|-include"
129    syn match   erlangDirective  "-module\|-record\|-undef"
130
131    syn match   erlangConstant   "-author\|-copyright\|-doc\|-vsn"
132
133    " Keywords
134    syn keyword erlangKeyword    after begin case catch
135    syn keyword erlangKeyword    cond end fun if
136    syn keyword erlangKeyword    let of query receive
137    syn keyword erlangKeyword    when
138    syn keyword erlangKeyword    try
139
140    " Processes
141    syn keyword erlangProcess    creation current_function dictionary
142    syn keyword erlangProcess    group_leader heap_size high initial_call
143    syn keyword erlangProcess    linked low memory_in_use message_queue
144    syn keyword erlangProcess    net_kernel node normal priority
145    syn keyword erlangProcess    reductions registered_name runnable
146    syn keyword erlangProcess    running stack_trace status timer
147    syn keyword erlangProcess    trap_exit waiting
148
149    " Ports
150    syn keyword erlangPort       command count_in count_out creation in
151    syn keyword erlangPort       in_format linked node out owner packeting
152
153    " Nodes
154    syn keyword erlangNode       atom_tables communicating creation
155    syn keyword erlangNode       current_gc current_reductions current_runtime
156    syn keyword erlangNode       current_wall_clock distribution_port
157    syn keyword erlangNode       entry_points error_handler friends
158    syn keyword erlangNode       garbage_collection magic_cookie magic_cookies
159    syn keyword erlangNode       module_table monitored_nodes name next_ref
160    syn keyword erlangNode       ports preloaded processes reductions
161    syn keyword erlangNode       ref_state registry runtime wall_clock
162
163    " Reserved
164    syn keyword erlangReserved   apply_lambda module_info module_lambdas
165    syn keyword erlangReserved   record record_index record_info
166
167    " Extras
168    syn keyword erlangExtra      badarg nocookie false fun true
169
170    " Signals
171    syn keyword erlangSignal     badsig kill killed exit normal
172endif
173
174
175
176" Define the default highlighting.
177" For version 5.7 and earlier: only when not done already
178" For version 5.8 and later: only when an item doesn't have highlighting yet
179if version >= 508 || !exists ("did_erlang_inits")
180    if version < 508
181        let did_erlang_inits = 1
182        command -nargs=+ HiLink hi link <args>
183    else
184        command -nargs=+ HiLink hi def link <args>
185    endif
186
187    " erlang_characters
188    HiLink erlangComment Comment
189    HiLink erlangAnnotation Special
190    HiLink erlangTodo Todo
191    HiLink erlangSpecialCharacter Special
192    HiLink erlangSeparator Normal
193    HiLink erlangModifier Special
194    HiLink erlangOperator Operator
195    HiLink erlangString String
196    HiLink erlangAtom Type
197
198    HiLink erlangNumberInteger Number
199    HiLink erlangNumberFloat1 Float
200    HiLink erlangNumberFloat2 Float
201    HiLink erlangNumberFloat3 Float
202    HiLink erlangNumberFloat4 Float
203    HiLink erlangNumberHex Number
204
205    HiLink erlangWord Normal
206
207    " erlang_functions
208    HiLink erlangFCall Function
209    HiLink erlangBIF Function
210    HiLink erlangFunction Function
211    HiLink erlangModuleFunction Function
212
213    " erlang_keywords
214    HiLink erlangDirective Type
215    HiLink erlangConstant Type
216    HiLink erlangKeyword Keyword
217    HiLink erlangProcess Special
218    HiLink erlangPort Special
219    HiLink erlangNode Special
220    HiLink erlangReserved Statement
221    HiLink erlangExtra Statement
222    HiLink erlangSignal Statement
223
224    delcommand HiLink
225endif
226
227
228let b:current_syntax = "erlang"
229
230