" Vim syntax file
" Language: erlang (ERicsson LANGuage)
" http://www.erlang.se
" http://www.erlang.org
" Maintainer: Kre�mir Mar��Kresimir Marzic) <[email protected]>
" 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
|