diff options
Diffstat (limited to 'runtime/syntax/kix.vim')
-rw-r--r-- | runtime/syntax/kix.vim | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/runtime/syntax/kix.vim b/runtime/syntax/kix.vim new file mode 100644 index 0000000..dd74378 --- /dev/null +++ b/runtime/syntax/kix.vim @@ -0,0 +1,170 @@ +" 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. + +" quit when a syntax file was already loaded +if 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. +" Set default highlight only if it doesn't already have a value. + +hi def link kixDoubleString String +hi def link kixSingleString String +hi def link kixStatement Statement +hi def link kixRepeat Repeat +hi def link kixComment Comment +hi def link kixBuiltin Function +hi def link kixLocalVar Special +hi def link kixMacro Special +hi def link kixEnvVar Special +hi def link kixLabel Type +hi def link kixFunction Function +hi def link kixInteger Number +hi def link kixHex Number +hi def link kixFloat Number +hi def link kixOperator Operator +hi def link kixExpression Operator + +hi def link kixParenCloseError Error +hi def link kixBrackCloseError Error +hi def link kixStringError Error + +hi def link kixWhileError Error +hi def link kixWhileOK Conditional +hi def link kixDoError Error +hi def link kixDoOK Conditional +hi def link kixIfError Error +hi def link kixIfOK Conditional +hi def link kixSelectError Error +hi def link kixSelectOK Conditional +hi def link kixForNextError Error +hi def link kixForNextOK Conditional +hi def link kixForEachError Error +hi def link kixForEachOK Conditional + + +let b:current_syntax = "kix" + +" vim: ts=8 sw=2 |