kix.vim 6.2 KB

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