diff options
Diffstat (limited to 'runtime/syntax/erlang.vim')
-rw-r--r-- | runtime/syntax/erlang.vim | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/runtime/syntax/erlang.vim b/runtime/syntax/erlang.vim new file mode 100644 index 000000000..a8ffb3939 --- /dev/null +++ b/runtime/syntax/erlang.vim @@ -0,0 +1,224 @@ +" Vim syntax file +" Language: erlang (ERicsson LANGuage) +" http://www.erlang.se +" http://www.erlang.org +" Maintainer: Krešimir Maržić (Kresimir Marzic) <kmarzic@fly.srk.fer.hr> +" Last update: Fri, 15-Feb-2002 +" Filenames: .erl +" URL: http://www.srk.fer.hr/~kmarzic/vim/syntax/erlang.vim + + +" There are three sets of highlighting in here: +" One is "erlang_characters", second is "erlang_functions" and third +" is "erlang_keywords". +" If you want to disable keywords highlighting, put in your .vimrc: +" let erlang_keywords=1 +" If you want to disable erlang BIF highlighting, put in your .vimrc +" this: +" let erlang_functions=1 +" If you want to disable special characters highlighting, put in +" your .vimrc: +" let erlang_characters=1 + + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists ("b:current_syntax") + finish +endif + + +" Case sensitive +syn case match + + +if ! exists ("erlang_characters") + " Basic elements + syn match erlangComment +%.*$+ + syn match erlangModifier "\~\a\|\\\a" contained + syn match erlangSpecialCharacter ":\|_\|@\|\\\|\"\|\." + syn match erlangSeparator "(\|)\|{\|}\|\[\|]\||\|||\|;\|,\|?\|->\|#" contained + syn region erlangString start=+"+ skip=+\\"+ end=+"+ contains=erlangModifier + syn region erlangAtom start=+'+ skip=+\\'+ end=+'+ + + " Operators + syn match erlangOperator "+\|-\|\*\|\/" + syn keyword erlangOperator div rem or xor bor bxor bsl bsr + syn keyword erlangOperator and band not bnot + syn match erlangOperator "==\|/=\|=:=\|=/=\|<\|=<\|>\|>=" + syn match erlangOperator "++\|--\|=\|!\|<-" + + " Numbers + syn match erlangNumberInteger "[+-]\=\d\+" contains=erlangSeparator + syn match erlangNumberFloat1 "[+-]\=\d\+.\d\+" contains=erlangSeparator + syn match erlangNumberFloat2 "[+-]\=\d\+\(.\d\+\)\=[eE][+-]\=\d\+\(.\d\+\)\=" contains=erlangSeparator + syn match erlangNumberFloat3 "[+-]\=\d\+[#]\x\+" contains=erlangSeparator + syn match erlangNumberFloat4 "[+-]\=[eE][+-]\=\d\+" contains=erlangSeparator + syn match erlangNumberHex "$\x\+" contains=erlangSeparator + + " Ignore '_' and '-' in words + syn match erlangWord "\w\+[_-]\+\w\+" + + " Ignore numbers in words + syn match erlangWord "\w\+\d\+\(\(.\d\+\)\=\(\w\+\)\=\)\=" +endif + +if ! exists ("erlang_functions") + " Functions call + syn match erlangFCall "\w\+\(\s\+\)\=[:@]\(\s\+\)\=\w\+" contains=ALLBUT,erlangFunction,erlangBIF,erlangWord + + " build-in-functions (BIFs) + syn keyword erlangBIF abs alive apply atom_to_list + syn keyword erlangBIF binary_to_list binary_to_term + syn keyword erlangBIF concat_binary + syn keyword erlangBIF date disconnect_node + syn keyword erlangBIF element erase exit + syn keyword erlangBIF float float_to_list + syn keyword erlangBIF get get_keys group_leader + syn keyword erlangBIF halt hd + syn keyword erlangBIF integer_to_list is_alive + syn keyword erlangBIF length link list_to_atom list_to_binary + syn keyword erlangBIF list_to_float list_to_integer list_to_pid + syn keyword erlangBIF list_to_tuple load_module + syn keyword erlangBIF make_ref monitor_node + syn keyword erlangBIF node nodes now + syn keyword erlangBIF open_port + syn keyword erlangBIF pid_to_list process_flag + syn keyword erlangBIF process_info process put + syn keyword erlangBIF register registered round + syn keyword erlangBIF self setelement size spawn + syn keyword erlangBIF spawn_link split_binary statistics + syn keyword erlangBIF term_to_binary throw time tl trunc + syn keyword erlangBIF tuple_to_list + syn keyword erlangBIF unlink unregister + syn keyword erlangBIF whereis + + " Other BIFs + syn keyword erlangBIF atom binary constant function integer + syn keyword erlangBIF list number pid ports port_close port_info + syn keyword erlangBIF reference record + + " erlang:BIFs + syn keyword erlangBIF check_process_code delete_module + syn keyword erlangBIF get_cookie hash math module_loaded + syn keyword erlangBIF preloaded processes purge_module set_cookie + syn keyword erlangBIF set_node + + " functions of math library + syn keyword erlangFunction acos asin atan atan2 cos cosh exp + syn keyword erlangFunction log log10 pi pow power sin sinh sqrt + syn keyword erlangFunction tan tanh + + " Other functions + syn keyword erlangFunction call module_info parse_transform + syn keyword erlangFunction undefined_function + + " Modules + syn keyword erlangModule error_handler +endif + +if ! exists ("erlang_keywords") + " Constants and Directives + syn match erlangDirective "-compile\|-define\|-else\|-endif\|-export\|-file" + syn match erlangDirective "-ifdef\|-ifndef\|-import\|-include\|-include_lib" + syn match erlangDirective "-module\|-record\|-undef" + + syn match erlangConstant "-author\|-copyright\|-doc" + + " Keywords + syn keyword erlangKeyword after begin case catch + syn keyword erlangKeyword cond end fun if + syn keyword erlangKeyword let of query receive + syn keyword erlangKeyword when + + " Processes + syn keyword erlangProcess creation current_function dictionary + syn keyword erlangProcess group_leader heap_size high initial_call + syn keyword erlangProcess linked low memory_in_use message_queue + syn keyword erlangProcess net_kernel node normal priority + syn keyword erlangProcess reductions registered_name runnable + syn keyword erlangProcess running stack_trace status timer + syn keyword erlangProcess trap_exit waiting + + " Ports + syn keyword erlangPort command count_in count_out creation in + syn keyword erlangPort in_format linked node out owner packeting + + " Nodes + syn keyword erlangNode atom_tables communicating creation + syn keyword erlangNode current_gc current_reductions current_runtime + syn keyword erlangNode current_wall_clock distribution_port + syn keyword erlangNode entry_points error_handler friends + syn keyword erlangNode garbage_collection magic_cookie magic_cookies + syn keyword erlangNode module_table monitored_nodes name next_ref + syn keyword erlangNode ports preloaded processes reductions + syn keyword erlangNode ref_state registry runtime wall_clock + + " Reserved + syn keyword erlangReserved apply_lambda module_info module_lambdas + syn keyword erlangReserved record record_index record_info + + " Extras + syn keyword erlangExtra badarg nocookie false fun true + + " Signals + syn keyword erlangSignal badsig kill killed exit normal +endif + + + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists ("did_erlang_inits") + if version < 508 + let did_erlang_inits = 1 + command -nargs=+ HiLink hi link <args> + else + command -nargs=+ HiLink hi def link <args> + endif + + " erlang_characters + HiLink erlangComment Comment + HiLink erlangSpecialCharacter Special + HiLink erlangSeparator Normal + HiLink erlangModifier Special + HiLink erlangOperator Operator + HiLink erlangString String + HiLink erlangAtom Type + + HiLink erlangNumberInteger Number + HiLink erlangNumberFloat1 Float + HiLink erlangNumberFloat2 Float + HiLink erlangNumberFloat3 Float + HiLink erlangNumberFloat4 Float + HiLink erlangNumberHex Number + + HiLink erlangWord Normal + + " erlang_functions + HiLink erlangFCall Function + HiLink erlangBIF Function + HiLink erlangFunction Function + HiLink erlangModuleFunction Function + + " erlang_keywords + HiLink erlangDirective Type + HiLink erlangConstant Type + HiLink erlangKeyword Keyword + HiLink erlangProcess Special + HiLink erlangPort Special + HiLink erlangNode Special + HiLink erlangReserved Statement + HiLink erlangExtra Statement + HiLink erlangSignal Statement + + delcommand HiLink +endif + + +let b:current_syntax = "erlang" + +" eof |