diff runtime/syntax/erlang.vim @ 1621:82b5078be2dd

updated for version 7.2a
author vimboss
date Tue, 24 Jun 2008 21:56:24 +0000
parents 3fc0f57ecb91
children 7bc41231fbc7
line wrap: on
line diff
--- a/runtime/syntax/erlang.vim
+++ b/runtime/syntax/erlang.vim
@@ -1,11 +1,11 @@
 " 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
+"              http://www.erlang.se
+"              http://www.erlang.org
+" Maintainer:  Csaba Hoch <csaba.hoch@gmail.com>
+" Former Maintainer:  Kreąimir Marľić (Kresimir Marzic) <kmarzic@fly.srk.fer.hr>
+" Last update: 12-Mar-2008
 " Filenames:   .erl
-" URL:	       http://www.srk.fer.hr/~kmarzic/vim/syntax/erlang.vim
 
 
 " There are three sets of highlighting in here:
@@ -24,9 +24,9 @@
 " 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
+    syntax clear
 elseif exists ("b:current_syntax")
-	finish
+    finish
 endif
 
 
@@ -35,136 +35,140 @@ 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=+'+
+
+    " Basic elements
+    syn match   erlangComment          "%.*$" contains=erlangAnnotation,erlangTodo
+    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
+    syn match   erlangAnnotation       "`[^']*'" contained
+    syn keyword erlangTodo             TODO FIXME XXX contained
+    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	   "++\|--\|=\|!\|<-"
+    " 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
+    " 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   erlangNumberHex        "$\x\+" contains=erlangSeparator
 
-	" Ignore '_' and '-' in words
-	syn match   erlangWord		   "\w\+[_-]\+\w\+"
+    " Ignore '_' and '-' in words
+    syn match   erlangWord             "\h\+\w*"
 
-	" Ignore numbers in words
-	syn match   erlangWord		   "\w\+\d\+\(\(.\d\+\)\=\(\w\+\)\=\)\="
+    syn match   erlangChar             /\$./
 endif
 
 if ! exists ("erlang_functions")
-	" Functions call
-	syn match   erlangFCall      "\w\+\(\s\+\)\=[:@]\(\s\+\)\=\w\+" contains=ALLBUT,erlangFunction,erlangBIF,erlangWord
+    " Functions call
+    syn match   erlangFCall      "\%(\w\+\s*\.\s*\)*\w\+\s*[:@]\s*\w\+"
 
-	" 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
+    " 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
+    " 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
+    " 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
+    " 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
+    " Other functions
+    syn keyword erlangFunction   call module_info parse_transform
+    syn keyword erlangFunction   undefined_function
 
-	" Modules
-	syn keyword erlangModule     error_handler
+    " 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"
+    " Constants and Directives
+    syn match   erlangDirective  "-behaviour\|-behaviour"
+    syn match   erlangDirective  "-compile\|-define\|-else\|-endif\|-export\|-file"
+    syn match   erlangDirective  "-ifdef\|-ifndef\|-import\|-include_lib\|-include"
+    syn match   erlangDirective  "-module\|-record\|-undef"
 
-	syn match   erlangConstant   "-author\|-copyright\|-doc"
+    syn match   erlangConstant   "-author\|-copyright\|-doc\|-vsn"
 
-	" 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
+    " 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
+    syn keyword erlangKeyword    try
 
-	" 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
+    " 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
+    " 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
+    " 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
+    " 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
+    " Extras
+    syn keyword erlangExtra      badarg nocookie false fun true
 
-	" Signals
-	syn keyword erlangSignal     badsig kill killed exit normal
+    " Signals
+    syn keyword erlangSignal     badsig kill killed exit normal
 endif
 
 
@@ -173,52 +177,53 @@ endif
 " 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
+    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
+    " erlang_characters
+    HiLink erlangComment Comment
+    HiLink erlangAnnotation Special
+    HiLink erlangTodo Todo
+    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 erlangNumberInteger Number
+    HiLink erlangNumberFloat1 Float
+    HiLink erlangNumberFloat2 Float
+    HiLink erlangNumberFloat3 Float
+    HiLink erlangNumberFloat4 Float
+    HiLink erlangNumberHex Number
 
-	HiLink erlangWord Normal
+    HiLink erlangWord Normal
 
-	" erlang_functions
-	HiLink erlangFCall Function
-	HiLink erlangBIF Function
-	HiLink erlangFunction Function
-	HiLink erlangModuleFunction Function
+    " 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
+    " 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
+    delcommand HiLink
 endif
 
 
 let b:current_syntax = "erlang"
 
-" eof