| " Vim syntax file |
| " Language: KixTart 95, Kix2001 Windows script language http://kixtart.org/ |
| " Maintainer: Richard Howarth <rhowarth@sgb.co.uk> |
| " Last Change: 2003 May 11 |
| " URL: http://www.howsoft.demon.co.uk/ |
| |
| " KixTart files identified by *.kix extension. |
| |
| " Amendment History: |
| " 26 April 2001: RMH |
| " Removed development comments from distro version |
| " Renamed "Kix*" to "kix*" for consistancy |
| " Changes made in preperation for VIM version 5.8/6.00 |
| |
| " TODO: |
| " Handle arrays highlighting |
| " Handle object highlighting |
| " The next two may not be possible: |
| " Work out how to error too many "(", i.e. (() should be an error. |
| " Similarly, "if" without "endif" and similar constructs should error. |
| |
| " Clear legacy syntax rules for version 5.x, exit if already processed for version 6+ |
| if version < 600 |
| syn clear |
| elseif exists("b:current_syntax") |
| finish |
| endif |
| |
| syn case match |
| syn keyword kixTODO TODO FIX XXX contained |
| |
| " Case insensitive language. |
| syn case ignore |
| |
| " Kix statements |
| syn match kixStatement "?" |
| syn keyword kixStatement beep big break |
| syn keyword kixStatement call cd cls color cookie1 copy |
| syn keyword kixStatement del dim display |
| syn keyword kixStatement exit |
| syn keyword kixStatement flushkb |
| syn keyword kixStatement get gets global go gosub goto |
| syn keyword kixStatement md |
| syn keyword kixStatement password play |
| syn keyword kixStatement quit |
| syn keyword kixStatement rd return run |
| syn keyword kixStatement set setl setm settime shell sleep small |
| syn keyword kixStatement use |
| |
| " Kix2001 |
| syn keyword kixStatement debug function endfunction redim |
| |
| " Simple variables |
| syn match kixNotVar "\$\$\|@@\|%%" transparent contains=NONE |
| syn match kixLocalVar "\$\w\+" |
| syn match kixMacro "@\w\+" |
| syn match kixEnvVar "%\w\+" |
| |
| " Destination labels |
| syn match kixLabel ":\w\+\>" |
| |
| " Identify strings, trap unterminated strings |
| syn match kixStringError +".*\|'.*+ |
| syn region kixDoubleString oneline start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar |
| syn region kixSingleString oneline start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar |
| |
| " Operators |
| syn match kixOperator "+\|-\|\*\|/\|=\|&\||" |
| syn keyword kixOperator and or |
| " Kix2001 |
| syn match kixOperator "==" |
| syn keyword kixOperator not |
| |
| " Numeric constants |
| syn match kixInteger "-\=\<\d\+\>" contains=NONE |
| syn match kixFloat "-\=\.\d\+\>\|-\=\<\d\+\.\d\+\>" contains=NONE |
| |
| " Hex numeric constants |
| syn match kixHex "\&\x\+\>" contains=NONE |
| |
| " Other contants |
| " Kix2001 |
| syn keyword kixConstant on off |
| |
| " Comments |
| syn match kixComment ";.*$" contains=kixTODO |
| |
| " Trap unmatched parenthesis |
| syn match kixParenCloseError ")" |
| syn region kixParen oneline transparent start="(" end=")" contains=ALLBUT,kixParenCloseError |
| |
| " Functions (Builtin + UDF) |
| syn match kixFunction "\w\+("he=e-1,me=e-1 contains=ALL |
| |
| " Trap unmatched brackets |
| syn match kixBrackCloseError "\]" |
| syn region kixBrack transparent start="\[" end="\]" contains=ALLBUT,kixBrackCloseError |
| |
| " Clusters for ALLBUT shorthand |
| syn cluster kixIfBut contains=kixIfError,kixSelectOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK |
| syn cluster kixSelectBut contains=kixSelectError,kixIfOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK |
| syn cluster kixDoBut contains=kixDoError,kixSelectOK,kixIfOK,kixWhileOK,kixForEachOK,kixForNextOK |
| syn cluster kixWhileBut contains=kixWhileError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixForNextOK |
| syn cluster kixForEachBut contains=kixForEachError,kixSelectOK,kixIfOK,kixDoOK,kixForNextOK,kixWhileOK |
| syn cluster kixForNextBut contains=kixForNextError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixWhileOK |
| " Condtional construct errors. |
| syn match kixIfError "\<if\>\|\<else\>\|\<endif\>" |
| syn match kixIfOK contained "\<if\>\|\<else\>\|\<endif\>" |
| syn region kixIf transparent matchgroup=kixIfOK start="\<if\>" end="\<endif\>" contains=ALLBUT,@kixIfBut |
| syn match kixSelectError "\<select\>\|\<case\>\|\<endselect\>" |
| syn match kixSelectOK contained "\<select\>\|\<case\>\|\<endselect\>" |
| syn region kixSelect transparent matchgroup=kixSelectOK start="\<select\>" end="\<endselect\>" contains=ALLBUT,@kixSelectBut |
| |
| " Program control constructs. |
| syn match kixDoError "\<do\>\|\<until\>" |
| syn match kixDoOK contained "\<do\>\|\<until\>" |
| syn region kixDo transparent matchgroup=kixDoOK start="\<do\>" end="\<until\>" contains=ALLBUT,@kixDoBut |
| syn match kixWhileError "\<while\>\|\<loop\>" |
| syn match kixWhileOK contained "\<while\>\|\<loop\>" |
| syn region kixWhile transparent matchgroup=kixWhileOK start="\<while\>" end="\<loop\>" contains=ALLBUT,@kixWhileBut |
| syn match kixForNextError "\<for\>\|\<to\>\|\<step\>\|\<next\>" |
| syn match kixForNextOK contained "\<for\>\|\<to\>\|\<step\>\|\<next\>" |
| syn region kixForNext transparent matchgroup=kixForNextOK start="\<for\>" end="\<next\>" contains=ALLBUT,@kixForBut |
| syn match kixForEachError "\<for each\>\|\<in\>\|\<next\>" |
| syn match kixForEachOK contained "\<for each\>\|\<in\>\|\<next\>" |
| syn region kixForEach transparent matchgroup=kixForEachOK start="\<for each\>" end="\<next\>" contains=ALLBUT,@kixForEachBut |
| |
| " Expressions |
| syn match kixExpression "<\|>\|<=\|>=\|<>" |
| |
| |
| " Default highlighting. |
| " Version < 5.8 set default highlight if file not already processed. |
| " Version >= 5.8 set default highlight only if it doesn't already have a value. |
| if version > 508 || !exists("did_kix_syn_inits") |
| if version < 508 |
| let did_kix_syn_inits=1 |
| command -nargs=+ HiLink hi link <args> |
| else |
| command -nargs=+ HiLink hi def link <args> |
| endif |
| |
| HiLink kixDoubleString String |
| HiLink kixSingleString String |
| HiLink kixStatement Statement |
| HiLink kixRepeat Repeat |
| HiLink kixComment Comment |
| HiLink kixBuiltin Function |
| HiLink kixLocalVar Special |
| HiLink kixMacro Special |
| HiLink kixEnvVar Special |
| HiLink kixLabel Type |
| HiLink kixFunction Function |
| HiLink kixInteger Number |
| HiLink kixHex Number |
| HiLink kixFloat Number |
| HiLink kixOperator Operator |
| HiLink kixExpression Operator |
| |
| HiLink kixParenCloseError Error |
| HiLink kixBrackCloseError Error |
| HiLink kixStringError Error |
| |
| HiLink kixWhileError Error |
| HiLink kixWhileOK Conditional |
| HiLink kixDoError Error |
| HiLink kixDoOK Conditional |
| HiLink kixIfError Error |
| HiLink kixIfOK Conditional |
| HiLink kixSelectError Error |
| HiLink kixSelectOK Conditional |
| HiLink kixForNextError Error |
| HiLink kixForNextOK Conditional |
| HiLink kixForEachError Error |
| HiLink kixForEachOK Conditional |
| |
| delcommand HiLink |
| endif |
| |
| let b:current_syntax = "kix" |
| |
| " vim: ts=8 sw=2 |