updated for version 7.0001
This commit is contained in:
182
runtime/syntax/kix.vim
Normal file
182
runtime/syntax/kix.vim
Normal file
@ -0,0 +1,182 @@
|
||||
" 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
|
||||
Reference in New Issue
Block a user