175 lines
6.3 KiB
VimL
175 lines
6.3 KiB
VimL
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
|
|
|
|
" 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
|
|
|
|
endif
|