moo.vim (9234B)
1 " Vim syntax file 2 " Language: MOO 3 " Maintainer: Timo Frenay <timo@frenay.net> 4 " Last Change: 2020 Oct 19 5 " Note: Requires Vim 6.0 or above 6 7 " quit when a syntax file was already loaded 8 if exists("b:current_syntax") 9 finish 10 endif 11 12 " Initializations 13 syn case ignore 14 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 19 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 29 30 " Operators 31 syn keyword mooOperatorIn in 32 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 36 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\)\>~ 40 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 65 66 " Numbers and object numbers 67 syn match mooNumber display ~\%(\%(\<\d\+\)\=\.\d\+\|\<\d\+\)\%(e[+\-]\=\d\+\)\=\>~ 68 syn match mooObject display ~#-\=\d\+\>~ 69 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 82 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 97 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 115 116 " Comments 117 syn match mooCommentSpecialChar display ~\\["\\]~ contained transparent contains=NONE 118 syn match mooComment ~[\t !%&*+,\-/<=>?@^|]\@<!\s*"\([^\"]\|\\.\)*"\s*;~ contains=mooStringError,mooCommentSpecialChar 119 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 124 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 133 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 138 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 170 171 let b:current_syntax = "moo" 172 173 " vim: ts=8