1" Vim syntax file 2" Language: Erlang 3" Author: Oscar Hellstr�m <[email protected]> (http://oscar.hellstrom.st) 4" Contributors: Ricardo Catalinas Jim�nez <[email protected]> 5" License: Vim license 6" Version: 2011/09/11 7 8if exists("b:current_syntax") 9 finish 10else 11 let b:current_syntax = "erlang" 12endif 13 14if !exists("g:erlang_highlight_bif") 15 let g:erlang_highlight_bif = 1 16endif 17 18" Erlang is case sensitive 19syn case match 20 21" Match groups 22syn match erlangStringModifier /\\./ contained 23syn match erlangStringModifier /\~\%(-\?[0-9*]\+\)\?\%(\.[0-9*]\+\..\?\)\?\%(c\|f\|e\|g\|s\|w\|p\|W\|P\|B\|X\|#\|b\|+\|n\|i\)/ contained 24syn match erlangModifier /\$\\\?./ 25 26syn match erlangInteger /\<\%([0-9]\+#[0-9a-fA-F]\+\|[0-9]\+\)\>/ 27syn match erlangFloat /\<[0-9]\+\.[0-9]\+\%(e-\?[0-9]\+\)\?\>/ 28 29syn keyword erlangTodo TODO FIXME XXX contained 30syn match erlangComment /%.*$/ contains=@Spell,erlangTodo,erlangAnnotation 31syn match erlangAnnotation /\%(%\s\)\@<=@\%(author\|clear\|copyright\|deprecated\|doc\|docfile\|end\|equiv\|headerfile\|hidden\|private\|reference\|see\|since\|spec\|throws\|title\|todo\|TODO\|type\|version\)/ contained 32syn match erlangAnnotation /`[^']\+'/ contained 33 34syn keyword erlangKeyword band bor bnot bsl bsr bxor div rem xor 35syn keyword erlangKeyword try catch begin receive after cond fun let query 36 37syn keyword erlangConditional case if of end 38syn keyword erlangConditional not and or andalso orelse 39syn keyword erlangConditional when 40 41syn keyword erlangBoolean true false 42 43syn keyword erlangGuard is_list is_alive is_atom is_binary is_bitstring is_boolean is_tuple is_number is_integer is_float is_function is_constant is_pid is_port is_reference is_record is_process_alive 44 45syn match erlangOperator /\/\|*\|+\|-\|++\|--/ 46syn match erlangOperator /->\|<-\|||\||\|!\|=/ 47syn match erlangOperator /=:=\|==\|\/=\|=\/=\|<\|>\|=<\|>=/ 48syn keyword erlangOperator div rem 49 50syn region erlangString start=/"/ end=/"/ skip=/\\/ contains=@Spell,erlangStringModifier 51 52syn match erlangVariable /\<[A-Z_]\w*\>/ 53syn match erlangAtom /\%(\%(^-\)\|#\)\@<!\<[a-z][A-Za-z0-9_]*\>\%(\s*[(:]\)\@!/ 54syn match erlangAtom /\\\@<!'[^']*\\\@<!'/ 55 56syn match erlangRecord /#\w\+/ 57 58syn match erlangTuple /{\|}/ 59syn match erlangList /\[\|\]/ 60 61syn match erlangAttribute /^-\%(vsn\|author\|copyright\|compile\|deprecated\|module\|export\|import\|behaviour\|behavior\|export_type\|ignore_xref\|on_load\)\s*(\@=/ 62syn match erlangInclude /^-include\%(_lib\)\?\s*(\@=/ 63syn match erlangRecordDef /^-record\s*(\@=/ 64syn match erlangDefine /^-\%(define\|undef\)\s*(\@=/ 65syn match erlangPreCondit /^-\%(ifdef\|ifndef\|else\|endif\)\%(\s*(\@=\)\?/ 66 67syn match erlangType /^-\%(spec\|type\)[( ]\@=/ 68 69syn match erlangMacro /\%(-define(\)\@<=\w\+/ 70syn match erlangMacro /?\??\w\+/ 71 72syn match erlangBitType /\%(\/\|-\)\@<=\%(bits\|bitstring\|binary\|integer\|float\|unit\)\>/ 73syn match erlangBitSize /:\@<=[0-9]\+/ 74 75syn match erlangBinary /<<\|>>/ 76 77" BIFs 78syn match erlangBIF /\%([^:0-9A-Za-z_]\|\<erlang:\)\@<=\%(abs\|apply\|atom_to_binary\|atom_to_list\|binary_part\|binary_to_atom\|binary_to_existing_atom\|binary_to_list\|binary_to_term\|bit_size\|bitstring_to_list\|byte_size\|check_process_code\|date\|delete_module\|demonitor\|disconnect_node\|element\|erase\|exit\|float\|float_to_list\|garbage_collect\|get\|get_keys\|group_leader\|hd\|integer_to_list\|iolist_size\|iolist_to_binary\|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\|port_control\|pre_loaded\|processes\|process_flag\|process_info\|purge_module\|put\|register\|registered\|round\|self\|setelement\|size\|spawn\|spawn_link\|spawn_monitor\|spawn_opt\|split_binary\|statistics\|term_to_binary\|time\|tl\|trunc\|tuple_size\|tuple_to_list\|unlink\|unregister\|whereis\)\%((\|\/[0-9]\)\@=/ 79syn match erlangBIF /\<\%(erlang:\)\@<=\%(append_element\|bump_reductions\|cancel_timer\|decode_packet\|display\|function_exported\|fun_info\|fun_to_list\|get_cookie\|get_stacktrace\|hash\|is_builtin\|loaded\|load_nif\|localtime\|localtime_to_universaltime\|make_tuple\|memory\|monitor_node\|phash\|port_call\|port_info\|ports\|port_to_list\|process_display\|read_timer\|ref_to_list\|resume_process\|send\|send_after\|send_nosuspend\|set_cookie\|start_timer\|suspend_process\|system_flag\|system_info\|system_monitor\|system_profile\|trace\|trace_delivered\|trace_info\|trace_pattern\|universaltime\|universaltime_to_localtime\|yield\)(\@=/ 80syn match erlangGBIF /erlang\%(:\w\)\@=/ 81 82" Link Erlang stuff to Vim groups 83hi link erlangTodo Todo 84hi link erlangString String 85hi link erlangNoSpellString String 86hi link erlangModifier SpecialChar 87hi link erlangStringModifier SpecialChar 88hi link erlangComment Comment 89hi link erlangAnnotation Special 90hi link erlangVariable Identifier 91hi link erlangInclude Include 92hi link erlangRecordDef Keyword 93hi link erlangAttribute Keyword 94hi link erlangKeyword Keyword 95hi link erlangMacro Macro 96hi link erlangDefine Define 97hi link erlangPreCondit PreCondit 98hi link erlangPreProc PreProc 99hi link erlangDelimiter Delimiter 100hi link erlangBitDelimiter Normal 101hi link erlangOperator Operator 102hi link erlangConditional Conditional 103hi link erlangGuard Conditional 104hi link erlangBoolean Boolean 105hi link erlangAtom Constant 106hi link erlangRecord Structure 107hi link erlangInteger Number 108hi link erlangFloat Number 109hi link erlangFloat Number 110hi link erlangFloat Number 111hi link erlangFloat Number 112hi link erlangHex Number 113hi link erlangFun Keyword 114hi link erlangList Delimiter 115hi link erlangTuple Delimiter 116hi link erlangBinary Keyword 117hi link erlangBitVariable Identifier 118hi link erlangBitType Type 119hi link erlangType Type 120hi link erlangBitSize Number 121 122" Optional highlighting 123if g:erlang_highlight_bif 124 hi link erlangBIF Keyword 125 hi link erlangGBIF Keyword 126endif 127