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