Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: erlang (ERicsson LANGuage) |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 8 | " Filenames: .erl |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 27 | syntax clear |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 28 | elseif exists ("b:current_syntax") |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 29 | finish |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 30 | endif |
| 31 | |
| 32 | |
| 33 | " Case sensitive |
| 34 | syn case match |
| 35 | |
| 36 | |
| 37 | if ! exists ("erlang_characters") |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 38 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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=+'+ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 49 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 50 | " Operators |
| 51 | syn match erlangOperator "+\|-\|\*\|\/" |
| 52 | syn keyword erlangOperator div rem or xor bor bxor bsl bsr |
Bram Moolenaar | 5c73622 | 2010-01-06 20:54:52 +0100 | [diff] [blame] | 53 | syn keyword erlangOperator and band not bnot andalso orelse |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 54 | syn match erlangOperator "==\|/=\|=:=\|=/=\|<\|=<\|>\|>=" |
| 55 | syn match erlangOperator "++\|--\|=\|!\|<-" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 56 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 63 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 64 | " Ignore '_' and '-' in words |
| 65 | syn match erlangWord "\h\+\w*" |
| 66 | |
| 67 | syn match erlangChar /\$./ |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 68 | endif |
| 69 | |
| 70 | if ! exists ("erlang_functions") |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 71 | " Functions call |
| 72 | syn match erlangFCall "\%(\w\+\s*\.\s*\)*\w\+\s*[:@]\s*\w\+" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 73 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 99 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 104 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 110 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 115 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 116 | " Other functions |
| 117 | syn keyword erlangFunction call module_info parse_transform |
| 118 | syn keyword erlangFunction undefined_function |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 119 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 120 | " Modules |
| 121 | syn keyword erlangModule error_handler |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 122 | endif |
| 123 | |
| 124 | if ! exists ("erlang_keywords") |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 125 | " Constants and Directives |
Bram Moolenaar | 5c73622 | 2010-01-06 20:54:52 +0100 | [diff] [blame] | 126 | syn match erlangDirective "-behaviour\|-behavior" |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 130 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 131 | syn match erlangConstant "-author\|-copyright\|-doc\|-vsn" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 132 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 139 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 148 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 149 | " Ports |
| 150 | syn keyword erlangPort command count_in count_out creation in |
| 151 | syn keyword erlangPort in_format linked node out owner packeting |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 152 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 162 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 163 | " Reserved |
| 164 | syn keyword erlangReserved apply_lambda module_info module_lambdas |
| 165 | syn keyword erlangReserved record record_index record_info |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 166 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 167 | " Extras |
| 168 | syn keyword erlangExtra badarg nocookie false fun true |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 169 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 170 | " Signals |
| 171 | syn keyword erlangSignal badsig kill killed exit normal |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 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") |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 186 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 197 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 198 | HiLink erlangNumberInteger Number |
| 199 | HiLink erlangNumberFloat1 Float |
| 200 | HiLink erlangNumberFloat2 Float |
| 201 | HiLink erlangNumberFloat3 Float |
| 202 | HiLink erlangNumberFloat4 Float |
| 203 | HiLink erlangNumberHex Number |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 204 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 205 | HiLink erlangWord Normal |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 206 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 207 | " erlang_functions |
| 208 | HiLink erlangFCall Function |
| 209 | HiLink erlangBIF Function |
| 210 | HiLink erlangFunction Function |
| 211 | HiLink erlangModuleFunction Function |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 212 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 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 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 223 | |
Bram Moolenaar | 446cb83 | 2008-06-24 21:56:24 +0000 | [diff] [blame] | 224 | delcommand HiLink |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 225 | endif |
| 226 | |
| 227 | |
| 228 | let b:current_syntax = "erlang" |
| 229 | |