kix.vim (6329B)
1 " Vim syntax file 2 " Language: KixTart 95, Kix2001 Windows script language http://kixtart.org/ 3 " Maintainer: Richard Howarth <rhowarth@sgb.co.uk> 4 " Last Change: 2003 May 11 5 " URL: http://www.howsoft.demon.co.uk/ 6 7 " KixTart files identified by *.kix extension. 8 9 " Amendment History: 10 " 26 April 2001: RMH 11 " Removed development comments from distro version 12 " Renamed "Kix*" to "kix*" for consistancy 13 " Changes made in preparation for VIM version 5.8/6.00 14 15 " TODO: 16 " Handle arrays highlighting 17 " Handle object highlighting 18 " The next two may not be possible: 19 " Work out how to error too many "(", i.e. (() should be an error. 20 " Similarly, "if" without "endif" and similar constructs should error. 21 22 " quit when a syntax file was already loaded 23 if exists("b:current_syntax") 24 finish 25 endif 26 27 syn case match 28 syn keyword kixTODO TODO FIX XXX contained 29 30 " Case insensitive language. 31 syn case ignore 32 33 " Kix statements 34 syn match kixStatement "?" 35 syn keyword kixStatement beep big break 36 syn keyword kixStatement call cd cls color cookie1 copy 37 syn keyword kixStatement del dim display 38 syn keyword kixStatement exit 39 syn keyword kixStatement flushkb 40 syn keyword kixStatement get gets global go gosub goto 41 syn keyword kixStatement md 42 syn keyword kixStatement password play 43 syn keyword kixStatement quit 44 syn keyword kixStatement rd return run 45 syn keyword kixStatement set setl setm settime shell sleep small 46 syn keyword kixStatement use 47 48 " Kix2001 49 syn keyword kixStatement debug function endfunction redim 50 51 " Simple variables 52 syn match kixNotVar "\$\$\|@@\|%%" transparent contains=NONE 53 syn match kixLocalVar "\$\w\+" 54 syn match kixMacro "@\w\+" 55 syn match kixEnvVar "%\w\+" 56 57 " Destination labels 58 syn match kixLabel ":\w\+\>" 59 60 " Identify strings, trap unterminated strings 61 syn match kixStringError +".*\|'.*+ 62 syn region kixDoubleString oneline start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar 63 syn region kixSingleString oneline start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar 64 65 " Operators 66 syn match kixOperator "+\|-\|\*\|/\|=\|&\||" 67 syn keyword kixOperator and or 68 " Kix2001 69 syn match kixOperator "==" 70 syn keyword kixOperator not 71 72 " Numeric constants 73 syn match kixInteger "-\=\<\d\+\>" contains=NONE 74 syn match kixFloat "-\=\.\d\+\>\|-\=\<\d\+\.\d\+\>" contains=NONE 75 76 " Hex numeric constants 77 syn match kixHex "\&\x\+\>" contains=NONE 78 79 " Other contants 80 " Kix2001 81 syn keyword kixConstant on off 82 83 " Comments 84 syn match kixComment ";.*$" contains=kixTODO 85 86 " Trap unmatched parenthesis 87 syn match kixParenCloseError ")" 88 syn region kixParen oneline transparent start="(" end=")" contains=ALLBUT,kixParenCloseError 89 90 " Functions (Builtin + UDF) 91 syn match kixFunction "\w\+("he=e-1,me=e-1 contains=ALL 92 93 " Trap unmatched brackets 94 syn match kixBrackCloseError "\]" 95 syn region kixBrack transparent start="\[" end="\]" contains=ALLBUT,kixBrackCloseError 96 97 " Clusters for ALLBUT shorthand 98 syn cluster kixIfBut contains=kixIfError,kixSelectOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK 99 syn cluster kixSelectBut contains=kixSelectError,kixIfOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK 100 syn cluster kixDoBut contains=kixDoError,kixSelectOK,kixIfOK,kixWhileOK,kixForEachOK,kixForNextOK 101 syn cluster kixWhileBut contains=kixWhileError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixForNextOK 102 syn cluster kixForEachBut contains=kixForEachError,kixSelectOK,kixIfOK,kixDoOK,kixForNextOK,kixWhileOK 103 syn cluster kixForNextBut contains=kixForNextError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixWhileOK 104 " Condtional construct errors. 105 syn match kixIfError "\<if\>\|\<else\>\|\<endif\>" 106 syn match kixIfOK contained "\<if\>\|\<else\>\|\<endif\>" 107 syn region kixIf transparent matchgroup=kixIfOK start="\<if\>" end="\<endif\>" contains=ALLBUT,@kixIfBut 108 syn match kixSelectError "\<select\>\|\<case\>\|\<endselect\>" 109 syn match kixSelectOK contained "\<select\>\|\<case\>\|\<endselect\>" 110 syn region kixSelect transparent matchgroup=kixSelectOK start="\<select\>" end="\<endselect\>" contains=ALLBUT,@kixSelectBut 111 112 " Program control constructs. 113 syn match kixDoError "\<do\>\|\<until\>" 114 syn match kixDoOK contained "\<do\>\|\<until\>" 115 syn region kixDo transparent matchgroup=kixDoOK start="\<do\>" end="\<until\>" contains=ALLBUT,@kixDoBut 116 syn match kixWhileError "\<while\>\|\<loop\>" 117 syn match kixWhileOK contained "\<while\>\|\<loop\>" 118 syn region kixWhile transparent matchgroup=kixWhileOK start="\<while\>" end="\<loop\>" contains=ALLBUT,@kixWhileBut 119 syn match kixForNextError "\<for\>\|\<to\>\|\<step\>\|\<next\>" 120 syn match kixForNextOK contained "\<for\>\|\<to\>\|\<step\>\|\<next\>" 121 syn region kixForNext transparent matchgroup=kixForNextOK start="\<for\>" end="\<next\>" contains=ALLBUT,@kixForBut 122 syn match kixForEachError "\<for each\>\|\<in\>\|\<next\>" 123 syn match kixForEachOK contained "\<for each\>\|\<in\>\|\<next\>" 124 syn region kixForEach transparent matchgroup=kixForEachOK start="\<for each\>" end="\<next\>" contains=ALLBUT,@kixForEachBut 125 126 " Expressions 127 syn match kixExpression "<\|>\|<=\|>=\|<>" 128 129 130 " Default highlighting. 131 " Set default highlight only if it doesn't already have a value. 132 133 hi def link kixDoubleString String 134 hi def link kixSingleString String 135 hi def link kixStatement Statement 136 hi def link kixRepeat Repeat 137 hi def link kixComment Comment 138 hi def link kixBuiltin Function 139 hi def link kixLocalVar Special 140 hi def link kixMacro Special 141 hi def link kixEnvVar Special 142 hi def link kixLabel Type 143 hi def link kixFunction Function 144 hi def link kixInteger Number 145 hi def link kixHex Number 146 hi def link kixFloat Number 147 hi def link kixOperator Operator 148 hi def link kixExpression Operator 149 150 hi def link kixParenCloseError Error 151 hi def link kixBrackCloseError Error 152 hi def link kixStringError Error 153 154 hi def link kixWhileError Error 155 hi def link kixWhileOK Conditional 156 hi def link kixDoError Error 157 hi def link kixDoOK Conditional 158 hi def link kixIfError Error 159 hi def link kixIfOK Conditional 160 hi def link kixSelectError Error 161 hi def link kixSelectOK Conditional 162 hi def link kixForNextError Error 163 hi def link kixForNextOK Conditional 164 hi def link kixForEachError Error 165 hi def link kixForEachOK Conditional 166 167 168 let b:current_syntax = "kix" 169 170 " vim: ts=8 sw=2