codekingpro/portable-devtools
114k
1" Vim syntax file2" Language: Pike3" Maintainer: Stephen R. van den Berg <srb@cuci.nl>4" Maintainer of previous implementation: Francesco Chemolli <kinkie@kame.usr.dsi.unimi.it>5" Last Change: 2018 Jan 286" Version: 2.97" Remark: Derived from the C-syntax; fixed several bugs in the C-syntax8" Remark: and extended it with the Pike syntax.9" Remark: Includes a highlighter for all Pike types of parenthesis errors.10" Remark: Includes a highlighter for SQL on multiline strings.11" Remark: Includes a highlighter for any embedded Autodoc format.12 13" Quit when a (custom) syntax file was already loaded14if exists("b:current_syntax")15 finish16endif17 18let s:cpo_save = &cpo19set cpo&vim20 21" For multiline strings, try formatting them as SQL22syn include @pikeSQL <sfile>:p:h/sqloracle.vim23unlet b:current_syntax24 25" For embedded Autodoc documentation (WIP)26syn include @pikeAutodoc <sfile>:p:h/autodoc.vim27unlet b:current_syntax28 29syn case match30 31" Supports array, multiset, mapping multi-character delimiter matching32" Supports rotating amongst several same-level preprocessor conditionals33packadd! matchit34let b:match_words = "({:}\\@1<=),(\\[:]\\@1<=),(<:>\\@1<=),^\s*#\s*\%(if\%(n\?def\)\|else\|el\%(se\)\?if\|endif\)\>"35 36" A bunch of useful Pike keywords37syn keyword pikeDebug gauge backtrace describe_backtrace werror _Static_assert static_assert38syn keyword pikeException error catch throw39syn keyword pikeLabel case default break return continue40syn keyword pikeConditional if else switch41syn keyword pikeRepeat while for foreach do42 43syn keyword pikePredef RegGetKeyNames RegGetValue RegGetValues44syn keyword pikePredef __automap__ __empty_program45syn keyword pikePredef __handle_sprintf_format __parse_pike_type _disable_threads46syn keyword pikePredef _do_call_outs _exit _gdb_breakpoint47syn keyword pikePredef abs access acos acosh add_constant alarm all_constants48syn keyword pikePredef array_sscanf asin asinh atan atan2 atanh atexit49syn keyword pikePredef basetype call_function call_out call_out_info cd ceil50syn keyword pikePredef combine_path combine_path_nt51syn keyword pikePredef combine_path_unix compile copy_value cos cosh cpp crypt52syn keyword pikePredef ctime decode_value delay encode_value encode_value_canonic53syn keyword pikePredef enumerate errno exece exit exp file_stat file_truncate54syn keyword pikePredef filesystem_stat find_call_out floor fork function_name55syn keyword pikePredef function_object function_program gc56syn keyword pikePredef get_active_compilation_handler get_active_error_handler57syn keyword pikePredef get_all_groups get_all_users get_dir get_groups_for_user58syn keyword pikePredef get_iterator get_profiling_info get_weak_flag getcwd59syn keyword pikePredef getgrgid getgrnam gethrdtime gethrtime gethrvtime getpid60syn keyword pikePredef getpwnam getpwuid getxattr glob gmtime has_index has_prefix61syn keyword pikePredef has_suffix has_value hash hash_7_0 hash_7_4 hash_8_062syn keyword pikePredef hash_value kill limit listxattr load_module localtime63syn keyword pikePredef log lower_case master max min mkdir mktime mv64syn keyword pikePredef object_program pow query_num_arg random_seed65syn keyword pikePredef remove_call_out removexattr replace_master rm round66syn keyword pikePredef set_priority set_weak_flag setxattr sgn signal signame67syn keyword pikePredef signum sin sinh sleep sort sprintf sqrt sscanf strerror68syn keyword pikePredef string_filter_non_unicode string_to_unicode string_to_utf869syn keyword pikePredef tan tanh time trace types ualarm unicode_to_string70syn keyword pikePredef upper_case utf8_to_string version71 72syn keyword pikePredef write lock try_lock73syn keyword pikePredef MutexKey Timestamp Date Time TimeTZ Interval Inet Range74syn keyword pikePredef Null null inf nan75 76syn keyword pikeTodo contained TODO FIXME XXX77 78" Match parengroups: allows for highlighting indices of mappings and79" highlighting semicolons that are out of place due to a paren imbalance80syn cluster pikePreShort contains=pikeDefine,pikePreProc,pikeCppOutWrapper,pikeCppInWrapper,pikePreCondit,pikePreConditMatch81syn cluster pikeExprGroup contains=pikeMappIndex,@pikeStmt,pikeNest,@pikeBadGroup,pikeSoftCast82syn match pikeWord transparent contained /[^()'"[\]{},;:]\+/ contains=ALLBUT,@pikePreProcGroup,@pikeExprGroup83syn match pikeFirstWord transparent display contained /^\s*#[^()'"[\]{},;:]\+/ contains=@pikePreShort84syn cluster pikeMappElm contains=pikeMappIndex,@pikeStmt85syn cluster pikeStmt contains=pikeFirstWord,pikeCharacter,pikeString,pikeMlString,pikeWord,pikeNest86syn cluster pikeBadGroup contains=pikeBadPClose,pikeBadAClose,pikeBadBClose,pikeBadSPClose,pikeBadSAClose,pikeBadSBClose,pikeBadSClose,pikeBadSPAClose,pikeBadSBAClose87syn match pikeBadPClose display contained "[}\]]"88syn match pikeBadAClose display contained "[)\]]"89syn match pikeBadBClose display contained "[)}]"90syn match pikeBadSPClose display contained "[;}\]]"91syn match pikeBadSAClose display contained "[;)\]]"92syn match pikeBadSPAClose display contained "[;\]]"93syn match pikeBadSBAClose display contained "[;}]"94syn match pikeBadSClose display contained "[;)}\]]"95syn region pikeNest transparent start="(\@1<!{" end="}" contains=@pikeStmt,pikeUserLabel,pikeBadAClose96syn region pikeNest transparent start="\%(\<for\%(each\)\?\s\?\)\@8<!([[{<]\@!" end=")" contains=@pikeStmt,pikeBadSPClose97syn region pikeNest transparent start="\%(\<for\%(each\)\?\s\?\)\@8<=(" end=")" contains=@pikeStmt,pikeBadPClose98syn region pikeNest transparent start="(\@1<!\[" end="]" contains=@pikeStmt,pikeBadSBClose99syn region pikeNest transparent start="(\zs\[" end="])" contains=@pikeMappElm,pikeBadSBAClose100" For some reason specifying a matchgroup on the pikeNest below makes it101" override the shorter variant; consider it a kludge, no idea why it works102syn region pikeNest transparent matchgroup=pikeSoftCast start=%(\zs\[[ \t\v\r\n.a-zA-Z0-9_():,|]\+])\@!% end=")" contains=@pikeStmt103syn region pikeNest transparent start="(\zs{" end="})" contains=@pikeStmt,pikeBadSPAClose104syn region pikeNest transparent start="(\zs<" end=">)" contains=@pikeStmt,pikeBadSPClose keepend105 106" It's easy to accidentally add a space after a backslash that was intended107" for line continuation. Some compilers allow it, which makes it108" unpredictable and should be avoided.109syn match pikeBadContinuation contained "\\\s\+$"110 111" pikeCommentGroup allows adding matches for special things in comments112syn cluster pikeCommentGroup contains=pikeTodo,pikeBadContinuation113 114" String and Character constants115" Highlight special characters (those which have a backslash) differently116syn match pikeSpecial display contained "\\\%(x\x*\|d\d*\|\o\+\|u\x\{4}\|U\x\{8}\|[abefnrtv]\|$\)"117 118" ISO C11 or ISO C++ 11119if !exists("c_no_cformat")120 " Highlight % items in strings.121 syn match pikeFormat display "%\%(\d\+\$\)\=[-+' #0*]*\%(\d*\|\*\|\*\d\+\$\)\%(\.\%(\d*\|\*\|\*\d\+\$\)\)\=\%([hlLjzt]\|ll\|hh\)\=\%([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained122 syn match pikeFormat display "%%" contained123 syn region pikeString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=pikeSpecial,pikeDelimiterDQ,pikeFormat,@Spell keepend124 syn region pikeMlString start=+#"+ skip=+\\\\\|\\"+ end=+"+ contains=pikeSpecial,pikeFormat,pikeDelimiterDQ,@Spell,pikeEmbeddedString keepend125else126 syn region pikeString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=pikeSpecial,pikeDelimiterDQ,@Spell127 syn region pikeMlString transparent start=+#"+ skip=+\\\\\|\\"+ end=+"+ contains=pikeSpecial,pikeDelimiterDQ,@Spell,pikeEmbeddedString keepend128endif129 130" Use SQL-syntax highlighting in multiline string if it starts with131" a standard SQL keyword132syn case ignore133" FIXME Use explicit newline match to cover up a bug in the regexp engine134" If the kludge is not used, the match will only start unless at least a space135" follows the initial doublequote on the first line (or the keyword is on136" the first line).137syn region pikeEmbeddedString contained start=+\%(#"\n\?\)\@2<=\_s*\%(SELECT\|INSERT\|UPDATE\|DELETE\|WITH\|CREATE\|DROP\|ALTER\)\>+ skip=+\\\\\|\\"+ end=+[\\#]\@1<!"+ contains=@pikeSQL,pikeBindings keepend138syn case match139 140syn match pikeBindings display contained ":\@1<!:\I\i*"141 142syn match pikeCharacter "'[^\\']'" contains=pikeDelimiterSQ143syn match pikeCharacter "'[^']*'" contains=pikeSpecial,pikeDelimiterSQ144syn match pikeSpecialError "'\\[^'\"?\\abefnrtv]'"145syn match pikeDelimiterDQ display +"+ contained146syn match pikeDelimiterSQ display +'+ contained147 148"when wanted, highlight trailing white space149if exists("c_space_errors")150 if !exists("c_no_trail_space_error")151 syn match pikeSpaceError display excludenl "\s\+$"152 endif153 if !exists("c_no_tab_space_error")154 syn match pikeSpaceError display " \+\ze\t"155 endif156endif157 158"integer number, or floating point number without a dot and with "f".159syn case ignore160syn match pikeNumbers display transparent "\<\d\|\.\d" contains=pikeNumber,pikeFloat,pikeOctalError,pikeOctal161" Same, but without octal error (for comments)162syn match pikeNumbersCom display contained transparent "\<\d\|\.\d" contains=pikeNumber,pikeFloat,pikeOctal163syn match pikeNumber display contained "\<\d\+\%(u\=l\{0,2}\|ll\=u\)\>"164"hex number165syn match pikeNumber display contained "\<0x\x\+\%(u\=l\{0,2}\|ll\=u\)\>"166" Flag the first zero of an octal number as something special167syn match pikeOctal display contained "\<0\o\+\%(u\=l\{0,2}\|ll\=u\)\>" contains=pikeOctalZero168syn match pikeOctalZero display contained "\<0"169"floating point number, with dot, optional exponent170syn match pikeFloat display contained "\<\d\+\%(f\|\.[0-9.]\@!\d*\%(e[-+]\=\d\+\)\=[fl]\=\)"171"floating point number, starting with a dot, optional exponent172syn match pikeFloat display contained "[0-9.]\@1<!\.\d\+\%(e[-+]\=\d\+\)\=[fl]\=\>"173"floating point number, without dot, with exponent174syn match pikeFloat display contained "\<\d\+e[-+]\=\d\+[fl]\=\>"175 176"hexadecimal floating point number, two variants, with exponent177syn match pikeFloat display contained "\<0x\%(\x\+\.\?\|\x*\.\x\+\)p[-+]\=\d\+[fl]\=\>"178 179" flag an octal number with wrong digits180syn match pikeOctalError display contained "\<0\o*[89]\d*"181syn case match182 183if exists("c_comment_strings")184 " A comment can contain pikeString, pikeCharacter and pikeNumber.185 " But a "*/" inside a pikeString in a pikeComment DOES end the comment! So we186 " need to use a special type of pikeString: pikeCommentString, which also ends on187 " "*/", and sees a "*" at the start of the line as comment again.188 " Unfortunately this doesn't very well work for // type of comments :-(189 syn match pikeCommentSkip contained "^\s*\*\%($\|\s\+\)"190 syn region pikeCommentString contained start=+\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\ze\*/+ contains=pikeSpecial,pikeCommentSkip191 syn region pikeComment2String contained start=+\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=pikeSpecial192 syn region pikeCommentL start="//" skip="\\$" end="$" keepend contains=@pikeCommentGroup,pikeComment2String,pikeCharacter,pikeNumbersCom,pikeSpaceError,@Spell containedin=pikeWord,pikeFirstWord193 if exists("c_no_comment_fold")194 " Use "extend" here to have preprocessor lines not terminate halfway a195 " comment.196 syn region pikeComment matchgroup=pikeCommentStart start="/\*" end="\*/" contains=@pikeCommentGroup,pikeCommentStartError,pikeCommentString,pikeCharacter,pikeNumbersCom,pikeSpaceError,@Spell extend containedin=pikeWord,pikeFirstWord197 else198 syn region pikeComment matchgroup=pikeCommentStart start="/\*" end="\*/" contains=@pikeCommentGroup,pikeCommentStartError,pikeCommentString,pikeCharacter,pikeNumbersCom,pikeSpaceError,@Spell fold extend containedin=pikeWord,pikeFirstWord199 endif200else201 syn region pikeCommentL start="//" skip="\\$" end="$" keepend contains=@pikeCommentGroup,pikeSpaceError,@Spell containedin=pikeWord,pikeFirstWord202 if exists("c_no_comment_fold")203 syn region pikeComment matchgroup=pikeCommentStart start="/\*" end="\*/" contains=@pikeCommentGroup,pikeCommentStartError,pikeSpaceError,@Spell extend containedin=pikeWord,pikeFirstWord204 else205 syn region pikeComment matchgroup=pikeCommentStart start="/\*" end="\*/" contains=@pikeCommentGroup,pikeCommentStartError,pikeSpaceError,@Spell fold extend containedin=pikeWord,pikeFirstWord206 endif207endif208" keep a // comment separately, it terminates a preproc. conditional209syn match pikeCommentError display "\*/"210syn match pikeCommentStartError display "/\ze\*" contained211 212syn keyword pikeOperator sizeof213syn keyword pikeOperator typeof _typeof _refs214syn keyword pikeOperator zero_type intp stringp arrayp mappingp multisetp215syn keyword pikeOperator objectp functionp programp callablep destructedp216syn keyword pikeOperator object_variablep undefinedp217syn keyword pikeOperator allocate equal218syn keyword pikeOperator aggregate aggregate_mapping aggregate_multiset219syn keyword pikeOperator map filter search replace reverse column rows220syn keyword pikeOperator indices values mkmapping mkmultiset m_delete sort221syn keyword pikeOperator m_delete destruct222syn keyword pikeOperator create _destruct _sprintf cast _encode _decode223syn keyword pikeOperator __hash _sizeof _values _indices __INIT _equal224syn keyword pikeOperator _is_type _m_delete _get_iterator _search225syn keyword pikeOperator _serialize _deserialize _sqrt _types _random226syn keyword pikeOperator _size_object227 228syn keyword pikeType int void229syn keyword pikeType float230syn keyword pikeType bool string array mapping multiset mixed231syn keyword pikeType object function program auto232 233syn keyword pikeType this this_object this_program234syn keyword pikeType sprintf_args sprintf_format sprintf_result235syn keyword pikeType strict_sprintf_format236 237syn keyword pikeStructure class enum typedef inherit import238syn keyword pikeTypedef typedef239syn keyword pikeStorageClass private protected public constant final variant240syn keyword pikeStorageClass optional inline extern static __deprecated__ lambda241 242syn keyword pikeConstant __LINE__ __FILE__ __DIR__ __DATE__ __TIME__243syn keyword pikeConstant __AUTO_BIGNUM__ __NT__244syn keyword pikeConstant __BUILD__ __COUNTER__ _MAJOR__ __MINOR__ __VERSION__245syn keyword pikeConstant __REAL_BUILD__ _REAL_MAJOR__ __REAL_MINOR__246syn keyword pikeConstant __REAL_VERSION__ __PIKE__ UNDEFINED247 248" These should actually only be parsed in preprocessor conditionals249syn keyword pikeCppOperator contained defined constant efun _Pragma250 251syn keyword pikeBoolean true false252 253syn match pikeCppPrefix display "^\s*\zs#\s*[a-z]\+" contained254syn region pikePreCondit start="^\s*#\s*\%(if\%(n\?def\)\?\|el\%(se\)\?if\)\>" skip="\\$" end="$" transparent keepend contains=pikeString,pikeCharacter,pikeNumbers,pikeCommentError,pikeSpaceError,pikeCppOperator,pikeCppPrefix255syn match pikePreConditMatch display "^\s*\zs#\s*\%(else\|endif\)\>"256if !exists("c_no_if0")257 syn cluster pikeCppOutInGroup contains=pikeCppInIf,pikeCppInElse,pikeCppInElse2,pikeCppOutIf,pikeCppOutIf2,pikeCppOutElse,pikeCppInSkip,pikeCppOutSkip258 syn region pikeCppOutWrapper start="^\s*\zs#\s*if\s\+0\+\s*\%($\|//\|/\*\|&\)" end=".\@=\|$" contains=pikeCppOutIf,pikeCppOutElse,@NoSpell fold259 syn region pikeCppOutIf contained start="0\+" matchgroup=pikeCppOutWrapper end="^\s*#\s*endif\>" contains=pikeCppOutIf2,pikeCppOutElse260 if !exists("c_no_if0_fold")261 syn region pikeCppOutIf2 contained matchgroup=pikeCppOutWrapper start="0\+" end="^\ze\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0\+\s*\%($\|//\|/\*\|&\)\)\@!\|endif\>\)" contains=pikeSpaceError,pikeCppOutSkip,@Spell fold262 else263 syn region pikeCppOutIf2 contained matchgroup=pikeCppOutWrapper start="0\+" end="^\ze\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0\+\s*\%($\|//\|/\*\|&\)\)\@!\|endif\>\)" contains=pikeSpaceError,pikeCppOutSkip,@Spell264 endif265 syn region pikeCppOutElse contained matchgroup=pikeCppOutWrapper start="^\s*#\s*\%(else\|el\%(se\)\?if\)" end="^\s*#\s*endif\>" contains=TOP,pikePreCondit266 syn region pikeCppInWrapper start="^\s*\zs#\s*if\s\+0*[1-9]\d*\s*\%($\|//\|/\*\||\)" end=".\@=\|$" contains=pikeCppInIf,pikeCppInElse fold267 syn region pikeCppInIf contained matchgroup=pikeCppInWrapper start="\d\+" end="^\s*#\s*endif\>" contains=TOP,pikePreCondit268 if !exists("c_no_if0_fold")269 syn region pikeCppInElse contained start="^\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0*[1-9]\d*\s*\%($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=pikeCppInIf contains=pikeCppInElse2 fold270 else271 syn region pikeCppInElse contained start="^\s*#\s*\%(else\>\|el\%(se\)\?if\s\+\%(0*[1-9]\d*\s*\%($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=pikeCppInIf contains=pikeCppInElse2272 endif273 syn region pikeCppInElse2 contained matchgroup=pikeCppInWrapper start="^\s*#\s*\%(else\|el\%(se\)\?if\)\%([^/]\|/[^/*]\)*" end="^\ze\s*#\s*endif\>" contains=pikeSpaceError,pikeCppOutSkip,@Spell274 syn region pikeCppOutSkip contained start="^\s*#\s*if\%(n\?def\)\?\>" skip="\\$" end="^\s*#\s*endif\>" contains=pikeSpaceError,pikeCppOutSkip275 syn region pikeCppInSkip contained matchgroup=pikeCppInWrapper start="^\s*#\s*\%(if\s\+\%(\d\+\s*\%($\|//\|/\*\||\|&\)\)\@!\|ifn\?def\>\)" skip="\\$" end="^\s*#\s*endif\>" containedin=pikeCppOutElse,pikeCppInIf,pikeCppInSkip contains=TOP,pikePreProc276endif277syn region pikeIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=pikeDelimiterDQ keepend278syn match pikeIncluded display contained "<[^>]*>"279syn match pikeInclude display "^\s*\zs#\s*include\>\s*["<]" contains=pikeIncluded280syn cluster pikePreProcGroup contains=pikeIncluded,pikeInclude,pikeEmbeddedString,pikeCppOutWrapper,pikeCppInWrapper,@pikeCppOutInGroup,pikeFormat,pikeMlString,pikeCommentStartError,@pikeBadGroup,pikeWord281syn region pikeDefine start="^\s*\zs#\s*\%(define\|undef\)\>" skip="\\$" end="$" keepend contains=@pikeStmt,@pikeBadGroup282syn region pikePreProc start="^\s*\zs#\s*\%(pragma\|charset\|pike\|require\|string\|line\|warning\|error\)\>" skip="\\$" end="$" transparent keepend contains=pikeString,pikeCharacter,pikeNumbers,pikeCommentError,pikeSpaceError,pikeCppOperator,pikeCppPrefix,@Spell,pikeConstant283 284syn match pikeAutodocReal display contained "\%(//\|[/ \t\v]\*\|^\*\)\@2<=!.*" contains=@pikeAutodoc containedin=pikeComment,pikeCommentL285syn cluster pikeCommentGroup add=pikeAutodocReal286syn cluster pikePreProcGroup add=pikeAutodocReal287 288" Highlight User Labels289" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'290syn match pikeUserLabel display "\%(^\|[{};]\)\zs\I\i*\s*\ze:\%([^:]\|$\)" contained contains=NONE291syn match pikeUserLabel display "\%(\<\%(break\|continue\)\_s\+\)\@10<=\I\i*" contained contains=NONE292syn match pikeUserLabel display "\%(\<case\)\@5<=\s\+[^<()[\]{},;:]\+\ze::\@!" contained contains=pikeDelimiterDQ,pikeDelimiterSQ293 294syn match pikeMappIndex display contained "[^<()[\]{},;:]\+\ze::\@!" contains=pikeDelimiterDQ,pikeDelimiterSQ295syn match pikeSoftCast display contained "\[[ \t\v\r\n.a-zA-Z0-9_():,|\+]" contains=NONE296 297if exists("c_minlines")298 let b:c_minlines = c_minlines299else300 if !exists("c_no_if0")301 let b:c_minlines = 400 " #if 0 constructs can be long302 else303 let b:c_minlines = 200 " mostly for multiline strings304 endif305endif306exec "syn sync ccomment pikeComment minlines=" . b:c_minlines307syn sync match pikeMlStringSync grouphere pikeMlString +^[^"#]\+#\"+308syn sync match pikeAutodocSync grouphere pikeCommentL "^\s*//!"309 310" Define the default highlighting.311" Only used when an item doesn't have highlighting yet312hi def link pikeFormat SpecialChar313hi def link pikeMlString String314hi def link pikeCommentL Comment315hi def link pikeCommentStart Comment316hi def link pikeLabel Label317hi def link pikeUserLabel Identifier318hi def link pikeConditional Conditional319hi def link pikeRepeat Repeat320hi def link pikeCharacter Character321hi def link pikeDelimiterDQ Delimiter322hi def link pikeDelimiterSQ Delimiter323hi def link pikeNumber Number324hi def link pikeOctal Number325hi def link pikeOctalZero PreProc " link this to Error if you want326hi def link pikeFloat Float327hi def link pikeOctalError Error328hi def link pikeCommentError Error329hi def link pikeCommentStartError Error330hi def link pikeSpaceError Error331hi def link pikeSpecialError Error332hi def link pikeOperator Operator333hi def link pikeCppOperator Operator334hi def link pikeStructure Structure335hi def link pikeTypedef Typedef336hi def link pikeStorageClass StorageClass337hi def link pikeInclude Include338hi def link pikeCppPrefix PreCondit339hi def link pikePreProc PreProc340hi def link pikeDefine Macro341hi def link pikeIncluded String342hi def link pikeError Error343hi def link pikeDebug Debug344hi def link pikeException Exception345hi def link pikeStatement Statement346hi def link pikeType Type347hi def link pikeConstant Constant348hi def link pikeBoolean Boolean349hi def link pikeCommentString String350hi def link pikeComment2String String351hi def link pikeCommentSkip Comment352hi def link pikeString String353hi def link pikeComment Comment354hi def link pikeSpecial SpecialChar355hi def link pikeTodo Todo356hi def link pikeBadContinuation Error357 358hi def link pikeCppInWrapper PreCondit359hi def link pikeCppOutWrapper PreCondit360hi def link pikePreConditMatch PreCondit361 362hi def link pikeCppOutSkip Comment363hi def link pikeCppInElse2 Comment364hi def link pikeCppOutIf2 Comment365hi def link pikeCppOut Comment366 367hi def link pikePredef Statement368hi def link pikeBindings Identifier369hi def link pikeMappIndex Identifier370hi def link pikeSoftCast Type371hi def link pikeBadGroup Error372hi def link pikeBadPClose Error373hi def link pikeBadAClose Error374hi def link pikeBadBClose Error375hi def link pikeBadSPClose Error376hi def link pikeBadSAClose Error377hi def link pikeBadSBClose Error378hi def link pikeBadSPAClose Error379hi def link pikeBadSBAClose Error380hi def link pikeBadSClose Error381 382let b:current_syntax = "pike"383 384let &cpo = s:cpo_save385unlet s:cpo_save386" vim: ts=8387 