7
|
1 " Vim syntax file
|
4437
|
2 " Language: Erlang (http://www.erlang.org)
|
|
3 " Maintainer: Csaba Hoch <csaba.hoch@gmail.com>
|
|
4 " Former Maintainer: Kreąimir Marľić (Kresimir Marzic) <kmarzic@fly.srk.fer.hr>
|
|
5 " Last Update: 2013-Mar-07
|
3281
|
6 " License: Vim license
|
4437
|
7 " URL: https://github.com/hcs42/vim-erlang
|
7
|
8
|
4437
|
9 " Customization:
|
|
10 "
|
|
11 " There are two optional sets of highlighting:
|
|
12 "
|
|
13 " 1. The BIFs (built-in functions) are highlighted by default. To disable
|
|
14 " this, put the following line in your vimrc:
|
|
15 "
|
|
16 " let g:erlang_highlight_bifs = 0
|
|
17 "
|
|
18 " 2. To enable highlighting some special atoms, put this in your vimrc:
|
|
19 "
|
|
20 " let g:erlang_highlight_special_atoms = 1
|
|
21
|
|
22 " For version 5.x: Clear all syntax items
|
|
23 " For version 6.x: Quit when a syntax file was already loaded
|
|
24 if version < 600
|
|
25 syntax clear
|
|
26 elseif exists("b:current_syntax")
|
|
27 finish
|
7
|
28 endif
|
|
29
|
4437
|
30 " Case sensitive
|
3281
|
31 syn case match
|
|
32
|
4437
|
33 if version >= 600
|
|
34 setlocal iskeyword+=$,@-@
|
|
35 endif
|
3281
|
36
|
4437
|
37 " Comments
|
|
38 syn match erlangComment '%.*$' contains=erlangCommentAnnotation,erlangTodo
|
|
39 syn match erlangCommentAnnotation ' \@<=@\%(clear\|docfile\|end\|headerfile\|todo\|TODO\|type\|author\|copyright\|doc\|reference\|see\|since\|title\|version\|deprecated\|hidden\|private\|equiv\|spec\|throws\)' contained
|
|
40 syn match erlangCommentAnnotation /`[^']*'/ contained
|
|
41 syn keyword erlangTodo TODO FIXME XXX contained
|
|
42
|
|
43 " Numbers (minimum base is 2, maximum is 36.)
|
|
44 syn match erlangNumberInteger '\<\d\+\>'
|
|
45 syn match erlangNumberInteger '\<\%([2-9]\|[12]\d\|3[0-6]\)\+#[[:alnum:]]\+\>'
|
|
46 syn match erlangNumberFloat '\<\d\+\.\d\+\%([eE][+-]\=\d\+\)\=\>'
|
7
|
47
|
4437
|
48 " Strings, atoms, characters
|
|
49 syn region erlangString start=/"/ end=/"/ contains=erlangStringModifier
|
|
50 syn region erlangQuotedAtom start=/'/ end=/'/ contains=erlangQuotedAtomModifier
|
|
51 syn match erlangStringModifier '\~\a\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
|
|
52 syn match erlangQuotedAtomModifier '\~\a\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)' contained
|
|
53 syn match erlangModifier '\$\%([^\\]\|\\\%(\o\{1,3}\|x\x\x\|x{\x\+}\|\^.\|.\)\)'
|
7
|
54
|
4437
|
55 " Operators
|
|
56 syn match erlangOperator '==\|=:=\|/=\|=/=\|<\|=<\|>\|>=\|++\|--\|=\|!\|<-\|+\|-\|\*\|\/'
|
|
57 syn keyword erlangOperator div rem or xor bor bxor bsl bsr and band not bnot andalso orelse
|
3281
|
58
|
4437
|
59 " Separators
|
|
60 syn match erlangSeparator '(\|)\|{\|}\|\[\|]\||\|||\|;\|,\|?\|#'
|
|
61 syn match erlangRightArrow '->'
|
7
|
62
|
4437
|
63 " Functions call
|
|
64 syn match erlangFCall '\<\%(\a[[:alnum:]@]*\s*\.\s*\)*\a[[:alnum:]@]*\s*:\s*\a[[:alnum:]@]*\>'
|
|
65
|
|
66 " Constants and Directives
|
|
67 syn match erlangDirective '-\%(behaviour\|behavior\|compile\|define\|else\|endif\|export\|file\|ifdef\|ifndef\|import\|include_lib\|include\|module\|record\|undef\|author\|copyright\|doc\|vsn\|on_load\|export_type\)\>'
|
7
|
68
|
4437
|
69 " Keywords
|
|
70 syn keyword erlangKeyword after begin case catch cond end fun if let of query receive when try
|
|
71 syn keyword erlangExtra true false
|
|
72
|
7
|
73
|
4437
|
74 if !exists("g:erlang_highlight_bifs") || g:erlang_highlight_bifs == 1
|
7
|
75
|
4437
|
76 " build-in-functions (BIFs)
|
|
77 syn keyword erlangBIF abs alive apply atom_to_binary atom_to_list binary_part binary_to_atom binary_to_existing_atom binary_to_float binary_to_integer bitstring_to_list binary_to_list binary_to_term bit_size byte_size check_old_code check_process_code concat_binary date delete_module demonitor disconnect_node element erase error exit float float_to_binary float_to_list garbage_collect get get_keys group_leader halt hd integer_to_binary integer_to_list iolist_to_binary iolist_size is_alive is_atom is_binary is_bitstring is_boolean is_float is_function is_integer is_list is_number is_pid is_port is_process_alive is_record is_reference is_tuple length link list_to_atom list_to_binary list_to_bitstring list_to_existing_atom list_to_float list_to_integer list_to_pid list_to_tuple load_module make_ref max min module_loaded monitor monitor_node node nodes now open_port pid_to_list port_close port_command port_connect pre_loaded process_flag process_flag process_info process purge_module put register registered round self setelement size spawn spawn_link spawn_monitor spawn_opt split_binary statistics term_to_binary throw time tl trunc tuple_size tuple_to_list unlink unregister whereis
|
7
|
78
|
4437
|
79 endif
|
|
80
|
|
81
|
|
82 if exists("g:erlang_highlight_special_atoms") && g:erlang_highlight_special_atoms == 1
|
7
|
83
|
4437
|
84 " Processes
|
|
85 syn keyword erlangProcess creation current_function dictionary
|
|
86 syn keyword erlangProcess group_leader heap_size high initial_call
|
|
87 syn keyword erlangProcess linked low memory_in_use message_queue
|
|
88 syn keyword erlangProcess net_kernel node normal priority
|
|
89 syn keyword erlangProcess reductions registered_name runnable
|
|
90 syn keyword erlangProcess running stack_trace status timer
|
|
91 syn keyword erlangProcess trap_exit waiting
|
7
|
92
|
4437
|
93 " Ports
|
|
94 syn keyword erlangPort command count_in count_out creation in
|
|
95 syn keyword erlangPort in_format linked node out owner packeting
|
7
|
96
|
4437
|
97 " Nodes
|
|
98 syn keyword erlangNode atom_tables communicating creation
|
|
99 syn keyword erlangNode current_gc current_reductions current_runtime
|
|
100 syn keyword erlangNode current_wall_clock distribution_port
|
|
101 syn keyword erlangNode entry_points error_handler friends
|
|
102 syn keyword erlangNode garbage_collection magic_cookie magic_cookies
|
|
103 syn keyword erlangNode module_table monitored_nodes name next_ref
|
|
104 syn keyword erlangNode ports preloaded processes reductions
|
|
105 syn keyword erlangNode ref_state registry runtime wall_clock
|
7
|
106
|
4437
|
107 " Reserved
|
|
108 syn keyword erlangReserved apply_lambda module_info module_lambdas
|
|
109 syn keyword erlangReserved record record_index record_info
|
|
110
|
|
111 " Extras
|
|
112 syn keyword erlangExtra badarg nocookie
|
7
|
113
|
4437
|
114 " Signals
|
|
115 syn keyword erlangSignal badsig kill killed exit normal
|
|
116 endif
|
|
117
|
|
118 " Sync at the beginning of functions: if this is not used, multiline string
|
|
119 " are not always recognized
|
|
120 syn sync match erlangSync grouphere NONE "^[a-z]\s*("
|
|
121
|
|
122 " Define the default highlighting.
|
|
123 " For version 5.7 and earlier: only when not done already
|
|
124 " For version 5.8 and later: only when an item doesn't have highlighting yet
|
|
125 if version >= 508 || !exists ("did_erlang_inits")
|
|
126 if version < 508
|
|
127 let did_erlang_inits = 1
|
|
128 command -nargs=+ HiLink hi link <args>
|
|
129 else
|
|
130 command -nargs=+ HiLink hi def link <args>
|
|
131 endif
|
7
|
132
|
4437
|
133 " erlang_characters
|
|
134 HiLink erlangComment Comment
|
|
135 HiLink erlangCommentAnnotation Special
|
|
136 HiLink erlangTodo Todo
|
|
137 HiLink erlangSeparator Normal
|
|
138 HiLink erlangOperator Operator
|
|
139 HiLink erlangRightArrow Operator
|
|
140
|
|
141 HiLink erlangStartString String
|
|
142 HiLink erlangString String
|
|
143 HiLink erlangStringModifier Special
|
|
144
|
|
145 HiLink erlangStartQuotedAtom Type
|
|
146 HiLink erlangQuotedAtom Type
|
|
147 HiLink erlangQuotedAtomModifier Special
|
|
148
|
|
149 HiLink erlangNumberInteger Number
|
|
150 HiLink erlangNumberFloat Float
|
|
151 HiLink erlangNumberHex Number
|
|
152
|
|
153 HiLink erlangModifier Special
|
7
|
154
|
4437
|
155 " erlang_functions
|
|
156 HiLink erlangFCall Function
|
|
157 HiLink erlangBIF Function
|
|
158
|
|
159 " erlang_keywords
|
|
160 HiLink erlangDirective Type
|
|
161 HiLink erlangKeyword Keyword
|
|
162 HiLink erlangProcess Special
|
|
163 HiLink erlangPort Special
|
|
164 HiLink erlangNode Special
|
|
165 HiLink erlangReserved Statement
|
|
166 HiLink erlangExtra Statement
|
|
167 HiLink erlangSignal Statement
|
|
168
|
|
169 delcommand HiLink
|
7
|
170 endif
|
4437
|
171
|
|
172
|
|
173 let b:current_syntax = "erlang"
|
|
174
|
|
175 " vim: sw=2 et
|