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