Merge branch 'vim-runtime'
[vim_mainline.git] / runtime / syntax / moo.vim
blob10c5d3b4bc23a662a5ccab7c1d6e97b0796b47da
1 " Vim syntax file
2 " Language:     MOO
3 " Maintainer:   Timo Frenay <timo@frenay.net>
4 " Last Change:  2001 Oct 06
5 " Note:         Requires Vim 6.0 or above
7 " Quit when a syntax file was already loaded
8 if version < 600 || exists("b:current_syntax")
9   finish
10 endif
12 " Initializations
13 syn case ignore
15 " C-style comments
16 syn match mooUncommentedError display ~\*/~
17 syn match mooCStyleCommentError display ~/\ze\*~ contained
18 syn region mooCStyleComment matchgroup=mooComment start=~/\*~ end=~\*/~ contains=mooCStyleCommentError
20 " Statements
21 if exists("moo_extended_cstyle_comments")
22   syn match mooIdentifier display ~\%(\%(/\*.\{-}\*/\s*\)*\)\@>\<\h\w*\>~ contained transparent contains=mooCStyleComment,@mooKeyword,mooType,mooVariable
23 else
24   syn match mooIdentifier display ~\<\h\w*\>~ contained transparent contains=@mooKeyword,mooType,mooVariable
25 endif
26 syn keyword mooStatement break continue else elseif endfor endfork endif endtry endwhile finally for if try
27 syn keyword mooStatement except fork while nextgroup=mooIdentifier skipwhite
28 syn keyword mooStatement return nextgroup=mooString skipwhite
30 " Operators
31 syn keyword mooOperatorIn in
33 " Error constants
34 syn keyword mooAny ANY
35 syn keyword mooErrorConstant E_ARGS E_INVARG E_DIV E_FLOAT E_INVIND E_MAXREC E_NACC E_NONE E_PERM E_PROPNF E_QUOTA E_RANGE E_RECMOVE E_TYPE E_VARNF E_VERBNF
37 " Builtin variables
38 syn match mooType display ~\<\%(ERR\|FLOAT\|INT\|LIST\|NUM\|OBJ\|STR\)\>~
39 syn match mooVariable display ~\<\%(args\%(tr\)\=\|caller\|dobj\%(str\)\=\|iobj\%(str\)\=\|player\|prepstr\|this\|verb\)\>~
41 " Strings
42 syn match mooStringError display ~[^\t -[\]-~]~ contained
43 syn match mooStringSpecialChar display ~\\["\\]~ contained
44 if !exists("moo_no_regexp")
45   " Regular expressions
46   syn match mooRegexp display ~%%~ contained containedin=mooString,mooRegexpParentheses transparent contains=NONE
47   syn region mooRegexpParentheses display matchgroup=mooRegexpOr start=~%(~ skip=~%%~ end=~%)~ contained containedin=mooString,mooRegexpParentheses transparent oneline
48   syn match mooRegexpOr display ~%|~ contained containedin=mooString,mooRegexpParentheses
49 endif
50 if !exists("moo_no_pronoun_sub")
51   " Pronoun substitutions
52   syn match mooPronounSub display ~%%~ contained containedin=mooString transparent contains=NONE
53   syn match mooPronounSub display ~%[#dilnopqrst]~ contained containedin=mooString
54   syn match mooPronounSub display ~%\[#[dilnt]\]~ contained containedin=mooString
55   syn match mooPronounSub display ~%(\h\w*)~ contained containedin=mooString
56   syn match mooPronounSub display ~%\[[dilnt]\h\w*\]~ contained containedin=mooString
57   syn match mooPronounSub display ~%<\%([dilnt]:\)\=\a\+>~ contained containedin=mooString
58 endif
59 if exists("moo_unmatched_quotes")
60   syn region mooString matchgroup=mooStringError start=~"~ end=~$~ contains=@mooStringContents keepend
61   syn region mooString start=~"~ skip=~\\.~ end=~"~ contains=@mooStringContents oneline keepend
62 else
63   syn region mooString start=~"~ skip=~\\.~ end=~"\|$~ contains=@mooStringContents keepend
64 endif
66 " Numbers and object numbers
67 syn match mooNumber display ~\%(\%(\<\d\+\)\=\.\d\+\|\<\d\+\)\%(e[+\-]\=\d\+\)\=\>~
68 syn match mooObject display ~#-\=\d\+\>~
70 " Properties and verbs
71 if exists("moo_builtin_properties")
72   "Builtin properties
73   syn keyword mooBuiltinProperty contents f location name owner programmer r w wizard contained containedin=mooPropRef
74 endif
75 if exists("moo_extended_cstyle_comments")
76   syn match mooPropRef display ~\.\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\h\w*\>~ transparent contains=mooCStyleComment,@mooKeyword
77   syn match mooVerbRef display ~:\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\h\w*\>~ transparent contains=mooCStyleComment,@mooKeyword
78 else
79   syn match mooPropRef display ~\.\s*\h\w*\>~ transparent contains=@mooKeyword
80   syn match mooVerbRef display ~:\s*\h\w*\>~ transparent contains=@mooKeyword
81 endif
83 " Builtin functions, core properties and core verbs
84 if exists("moo_extended_cstyle_comments")
85   syn match mooBuiltinFunction display ~\<\h\w*\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\ze(~ contains=mooCStyleComment
86   syn match mooCorePropOrVerb display ~\$\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>\%(in\>\)\@!\h\w*\>~ contains=mooCStyleComment,@mooKeyword
87 else
88   syn match mooBuiltinFunction display ~\<\h\w*\s*\ze(~ contains=NONE
89   syn match mooCorePropOrVerb display ~\$\s*\%(in\>\)\@!\h\w*\>~ contains=@mooKeyword
90 endif
91 if exists("moo_unknown_builtin_functions")
92   syn match mooUnknownBuiltinFunction ~\<\h\w*\>~ contained containedin=mooBuiltinFunction contains=mooKnownBuiltinFunction
93   " Known builtin functions as of version 1.8.1 of the server
94   " Add your own extensions to this group if you like
95   syn keyword mooKnownBuiltinFunction abs acos add_property add_verb asin atan binary_hash boot_player buffered_output_length callers caller_perms call_function ceil children chparent clear_property connected_players connected_seconds connection_name connection_option connection_options cos cosh create crypt ctime db_disk_size decode_binary delete_property delete_verb disassemble dump_database encode_binary equal eval exp floatstr floor flush_input force_input function_info idle_seconds index is_clear_property is_member is_player kill_task length listappend listdelete listen listeners listinsert listset log log10 match max max_object memory_usage min move notify object_bytes open_network_connection output_delimiters parent pass players properties property_info queued_tasks queue_info raise random read recycle renumber reset_max_object resume rindex rmatch seconds_left server_log server_version setadd setremove set_connection_option set_player_flag set_property_info set_task_perms set_verb_args set_verb_code set_verb_info shutdown sin sinh sqrt strcmp string_hash strsub substitute suspend tan tanh task_id task_stack ticks_left time tofloat toint toliteral tonum toobj tostr trunc typeof unlisten valid value_bytes value_hash verbs verb_args verb_code verb_info contained
96 endif
98 " Enclosed expressions
99 syn match mooUnenclosedError display ~[')\]|}]~
100 syn match mooParenthesesError display ~[';\]|}]~ contained
101 syn region mooParentheses start=~(~ end=~)~ transparent contains=@mooEnclosedContents,mooParenthesesError
102 syn match mooBracketsError display ~[');|}]~ contained
103 syn region mooBrackets start=~\[~ end=~\]~ transparent contains=@mooEnclosedContents,mooBracketsError
104 syn match mooBracesError display ~[');\]|]~ contained
105 syn region mooBraces start=~{~ end=~}~ transparent contains=@mooEnclosedContents,mooBracesError
106 syn match mooQuestionError display ~[');\]}]~ contained
107 syn region mooQuestion start=~?~ end=~|~ transparent contains=@mooEnclosedContents,mooQuestionError
108 syn match mooCatchError display ~[);\]|}]~ contained
109 syn region mooCatch matchgroup=mooExclamation start=~`~ end=~'~ transparent contains=@mooEnclosedContents,mooCatchError,mooExclamation
110 if exists("moo_extended_cstyle_comments")
111   syn match mooExclamation display ~[\t !%&(*+,\-/<=>?@[^`{|]\@<!\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>!=\@!~ contained contains=mooCStyleComment
112 else
113   syn match mooExclamation display ~[\t !%&(*+,\-/<=>?@[^`{|]\@<!\s*!=\@!~ contained
114 endif
116 " Comments
117 syn match mooCommentSpecialChar display ~\\["\\]~ contained transparent contains=NONE
118 syn match mooComment ~[\t !%&*+,\-/<=>?@^|]\@<!\s*"\([^\"]\|\\.\)*"\s*;~ contains=mooStringError,mooCommentSpecialChar
120 " Non-code
121 syn region mooNonCode start=~^\s*@\<~ end=~$~
122 syn match mooNonCode display ~^\.$~
123 syn match mooNonCode display ~^\s*\d\+:~he=e-1
125 " Overriding matches
126 syn match mooRangeOperator display ~\.\.~ transparent contains=NONE
127 syn match mooOrOperator display ~||~ transparent contains=NONE
128 if exists("moo_extended_cstyle_comments")
129   syn match mooScattering ~[,{]\@<=\s*\%(\%(/\*.\{-}\*/\s*\)*\)\@>?~ transparent contains=mooCStyleComment
130 else
131   syn match mooScattering ~[,{]\@<=\s*?~ transparent contains=NONE
132 endif
134 " Clusters
135 syn cluster mooKeyword contains=mooStatement,mooOperatorIn,mooAny,mooErrorConstant
136 syn cluster mooStringContents contains=mooStringError,mooStringSpecialChar
137 syn cluster mooEnclosedContents contains=TOP,mooUnenclosedError,mooComment,mooNonCode
139 " Define the default highlighting.
140 hi def link mooUncommentedError Error
141 hi def link mooCStyleCommentError Error
142 hi def link mooCStyleComment Comment
143 hi def link mooStatement Statement
144 hi def link mooOperatorIn Operator
145 hi def link mooAny Constant " link this to Keyword if you want
146 hi def link mooErrorConstant Constant
147 hi def link mooType Type
148 hi def link mooVariable Type
149 hi def link mooStringError Error
150 hi def link mooStringSpecialChar SpecialChar
151 hi def link mooRegexpOr SpecialChar
152 hi def link mooPronounSub SpecialChar
153 hi def link mooString String
154 hi def link mooNumber Number
155 hi def link mooObject Number
156 hi def link mooBuiltinProperty Type
157 hi def link mooBuiltinFunction Function
158 hi def link mooUnknownBuiltinFunction Error
159 hi def link mooKnownBuiltinFunction Function
160 hi def link mooCorePropOrVerb Identifier
161 hi def link mooUnenclosedError Error
162 hi def link mooParenthesesError Error
163 hi def link mooBracketsError Error
164 hi def link mooBracesError Error
165 hi def link mooQuestionError Error
166 hi def link mooCatchError Error
167 hi def link mooExclamation Exception
168 hi def link mooComment Comment
169 hi def link mooNonCode PreProc
171 let b:current_syntax = "moo"
173 " vim: ts=8