7
|
1 " Vim syntax file
|
|
2 " Language: erlang (ERicsson LANGuage)
|
1621
|
3 " http://www.erlang.se
|
|
4 " http://www.erlang.org
|
|
5 " Maintainer: Csaba Hoch <csaba.hoch@gmail.com>
|
|
6 " Former Maintainer: Kreąimir Marľić (Kresimir Marzic) <kmarzic@fly.srk.fer.hr>
|
|
7 " Last update: 12-Mar-2008
|
7
|
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
|
|
26 if version < 600
|
1621
|
27 syntax clear
|
7
|
28 elseif exists ("b:current_syntax")
|
1621
|
29 finish
|
7
|
30 endif
|
|
31
|
|
32
|
|
33 " Case sensitive
|
|
34 syn case match
|
|
35
|
|
36
|
|
37 if ! exists ("erlang_characters")
|
1621
|
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=+'+
|
7
|
49
|
1621
|
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
|
|
54 syn match erlangOperator "==\|/=\|=:=\|=/=\|<\|=<\|>\|>="
|
|
55 syn match erlangOperator "++\|--\|=\|!\|<-"
|
7
|
56
|
1621
|
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
|
7
|
63
|
1621
|
64 " Ignore '_' and '-' in words
|
|
65 syn match erlangWord "\h\+\w*"
|
7
|
66
|
1621
|
67 syn match erlangChar /\$./
|
7
|
68 endif
|
|
69
|
|
70 if ! exists ("erlang_functions")
|
1621
|
71 " Functions call
|
|
72 syn match erlangFCall "\%(\w\+\s*\.\s*\)*\w\+\s*[:@]\s*\w\+"
|
7
|
73
|
1621
|
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
|
7
|
99
|
1621
|
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
|
7
|
104
|
1621
|
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
|
7
|
110
|
1621
|
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
|
7
|
115
|
1621
|
116 " Other functions
|
|
117 syn keyword erlangFunction call module_info parse_transform
|
|
118 syn keyword erlangFunction undefined_function
|
7
|
119
|
1621
|
120 " Modules
|
|
121 syn keyword erlangModule error_handler
|
7
|
122 endif
|
|
123
|
|
124 if ! exists ("erlang_keywords")
|
1621
|
125 " Constants and Directives
|
|
126 syn match erlangDirective "-behaviour\|-behaviour"
|
|
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"
|
7
|
130
|
1621
|
131 syn match erlangConstant "-author\|-copyright\|-doc\|-vsn"
|
7
|
132
|
1621
|
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
|
7
|
139
|
1621
|
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
|
7
|
148
|
1621
|
149 " Ports
|
|
150 syn keyword erlangPort command count_in count_out creation in
|
|
151 syn keyword erlangPort in_format linked node out owner packeting
|
7
|
152
|
1621
|
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
|
7
|
162
|
1621
|
163 " Reserved
|
|
164 syn keyword erlangReserved apply_lambda module_info module_lambdas
|
|
165 syn keyword erlangReserved record record_index record_info
|
7
|
166
|
1621
|
167 " Extras
|
|
168 syn keyword erlangExtra badarg nocookie false fun true
|
7
|
169
|
1621
|
170 " Signals
|
|
171 syn keyword erlangSignal badsig kill killed exit normal
|
7
|
172 endif
|
|
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
|
|
179 if version >= 508 || !exists ("did_erlang_inits")
|
1621
|
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
|
7
|
186
|
1621
|
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
|
7
|
197
|
1621
|
198 HiLink erlangNumberInteger Number
|
|
199 HiLink erlangNumberFloat1 Float
|
|
200 HiLink erlangNumberFloat2 Float
|
|
201 HiLink erlangNumberFloat3 Float
|
|
202 HiLink erlangNumberFloat4 Float
|
|
203 HiLink erlangNumberHex Number
|
7
|
204
|
1621
|
205 HiLink erlangWord Normal
|
7
|
206
|
1621
|
207 " erlang_functions
|
|
208 HiLink erlangFCall Function
|
|
209 HiLink erlangBIF Function
|
|
210 HiLink erlangFunction Function
|
|
211 HiLink erlangModuleFunction Function
|
7
|
212
|
1621
|
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
|
7
|
223
|
1621
|
224 delcommand HiLink
|
7
|
225 endif
|
|
226
|
|
227
|
|
228 let b:current_syntax = "erlang"
|
|
229
|