xref: /vim-8.2.3635/runtime/syntax/kix.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	KixTart 95, Kix2001 Windows script language http://kixtart.org/
3071d4279SBram Moolenaar" Maintainer:	Richard Howarth <[email protected]>
4071d4279SBram Moolenaar" Last Change:	2003 May 11
5071d4279SBram Moolenaar" URL:		http://www.howsoft.demon.co.uk/
6071d4279SBram Moolenaar
7071d4279SBram Moolenaar" KixTart files identified by *.kix extension.
8071d4279SBram Moolenaar
9071d4279SBram Moolenaar" Amendment History:
10071d4279SBram Moolenaar" 26 April 2001: RMH
11071d4279SBram Moolenaar"    Removed development comments from distro version
12071d4279SBram Moolenaar"    Renamed "Kix*" to "kix*" for consistancy
13071d4279SBram Moolenaar"    Changes made in preperation for VIM version 5.8/6.00
14071d4279SBram Moolenaar
15071d4279SBram Moolenaar" TODO:
16071d4279SBram Moolenaar"	Handle arrays highlighting
17071d4279SBram Moolenaar"	Handle object highlighting
18071d4279SBram Moolenaar" The next two may not be possible:
19071d4279SBram Moolenaar"	Work out how to error too many "(", i.e. (() should be an error.
20071d4279SBram Moolenaar"	Similarly, "if" without "endif" and similar constructs should error.
21071d4279SBram Moolenaar
2289bcfda6SBram Moolenaar" quit when a syntax file was already loaded
2389bcfda6SBram Moolenaarif exists("b:current_syntax")
24071d4279SBram Moolenaar	finish
25071d4279SBram Moolenaarendif
26071d4279SBram Moolenaar
27071d4279SBram Moolenaarsyn case match
28071d4279SBram Moolenaarsyn keyword kixTODO		TODO FIX XXX contained
29071d4279SBram Moolenaar
30071d4279SBram Moolenaar" Case insensitive language.
31071d4279SBram Moolenaarsyn case ignore
32071d4279SBram Moolenaar
33071d4279SBram Moolenaar" Kix statements
34071d4279SBram Moolenaarsyn match   kixStatement	"?"
35071d4279SBram Moolenaarsyn keyword kixStatement	beep big break
36071d4279SBram Moolenaarsyn keyword kixStatement	call cd cls color cookie1 copy
37071d4279SBram Moolenaarsyn keyword kixStatement	del dim display
38071d4279SBram Moolenaarsyn keyword kixStatement	exit
39071d4279SBram Moolenaarsyn keyword kixStatement	flushkb
40071d4279SBram Moolenaarsyn keyword kixStatement	get gets global go gosub goto
41071d4279SBram Moolenaarsyn keyword kixStatement	md
42071d4279SBram Moolenaarsyn keyword kixStatement	password play
43071d4279SBram Moolenaarsyn keyword kixStatement	quit
44071d4279SBram Moolenaarsyn keyword kixStatement	rd return run
45071d4279SBram Moolenaarsyn keyword kixStatement	set setl setm settime shell sleep small
46071d4279SBram Moolenaarsyn keyword kixStatement	use
47071d4279SBram Moolenaar
48071d4279SBram Moolenaar" Kix2001
49071d4279SBram Moolenaarsyn keyword kixStatement	debug function endfunction redim
50071d4279SBram Moolenaar
51071d4279SBram Moolenaar" Simple variables
52071d4279SBram Moolenaarsyn match   kixNotVar		"\$\$\|@@\|%%" transparent contains=NONE
53071d4279SBram Moolenaarsyn match   kixLocalVar		"\$\w\+"
54071d4279SBram Moolenaarsyn match   kixMacro		"@\w\+"
55071d4279SBram Moolenaarsyn match   kixEnvVar		"%\w\+"
56071d4279SBram Moolenaar
57071d4279SBram Moolenaar" Destination labels
58071d4279SBram Moolenaarsyn match   kixLabel		":\w\+\>"
59071d4279SBram Moolenaar
60071d4279SBram Moolenaar" Identify strings, trap unterminated strings
61071d4279SBram Moolenaarsyn match   kixStringError      +".*\|'.*+
62071d4279SBram Moolenaarsyn region  kixDoubleString	oneline start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar
63071d4279SBram Moolenaarsyn region  kixSingleString	oneline start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=kixLocalVar,kixMacro,kixEnvVar,kixNotVar
64071d4279SBram Moolenaar
65071d4279SBram Moolenaar" Operators
66071d4279SBram Moolenaarsyn match   kixOperator		"+\|-\|\*\|/\|=\|&\||"
67071d4279SBram Moolenaarsyn keyword kixOperator		and or
68071d4279SBram Moolenaar" Kix2001
69071d4279SBram Moolenaarsyn match   kixOperator		"=="
70071d4279SBram Moolenaarsyn keyword kixOperator		not
71071d4279SBram Moolenaar
72071d4279SBram Moolenaar" Numeric constants
73071d4279SBram Moolenaarsyn match   kixInteger		"-\=\<\d\+\>" contains=NONE
74071d4279SBram Moolenaarsyn match   kixFloat		"-\=\.\d\+\>\|-\=\<\d\+\.\d\+\>" contains=NONE
75071d4279SBram Moolenaar
76071d4279SBram Moolenaar" Hex numeric constants
77071d4279SBram Moolenaarsyn match   kixHex		"\&\x\+\>" contains=NONE
78071d4279SBram Moolenaar
79071d4279SBram Moolenaar" Other contants
80071d4279SBram Moolenaar" Kix2001
81071d4279SBram Moolenaarsyn keyword kixConstant		on off
82071d4279SBram Moolenaar
83071d4279SBram Moolenaar" Comments
84071d4279SBram Moolenaarsyn match   kixComment		";.*$" contains=kixTODO
85071d4279SBram Moolenaar
86071d4279SBram Moolenaar" Trap unmatched parenthesis
87071d4279SBram Moolenaarsyn match   kixParenCloseError	")"
88071d4279SBram Moolenaarsyn region  kixParen		oneline transparent start="(" end=")" contains=ALLBUT,kixParenCloseError
89071d4279SBram Moolenaar
90071d4279SBram Moolenaar" Functions (Builtin + UDF)
91071d4279SBram Moolenaarsyn match   kixFunction		"\w\+("he=e-1,me=e-1 contains=ALL
92071d4279SBram Moolenaar
93071d4279SBram Moolenaar" Trap unmatched brackets
94071d4279SBram Moolenaarsyn match   kixBrackCloseError	"\]"
95071d4279SBram Moolenaarsyn region  kixBrack		transparent start="\[" end="\]" contains=ALLBUT,kixBrackCloseError
96071d4279SBram Moolenaar
97071d4279SBram Moolenaar" Clusters for ALLBUT shorthand
98071d4279SBram Moolenaarsyn cluster kixIfBut		contains=kixIfError,kixSelectOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK
99071d4279SBram Moolenaarsyn cluster kixSelectBut	contains=kixSelectError,kixIfOK,kixDoOK,kixWhileOK,kixForEachOK,kixForNextOK
100071d4279SBram Moolenaarsyn cluster kixDoBut		contains=kixDoError,kixSelectOK,kixIfOK,kixWhileOK,kixForEachOK,kixForNextOK
101071d4279SBram Moolenaarsyn cluster kixWhileBut		contains=kixWhileError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixForNextOK
102071d4279SBram Moolenaarsyn cluster kixForEachBut	contains=kixForEachError,kixSelectOK,kixIfOK,kixDoOK,kixForNextOK,kixWhileOK
103071d4279SBram Moolenaarsyn cluster kixForNextBut	contains=kixForNextError,kixSelectOK,kixIfOK,kixDoOK,kixForEachOK,kixWhileOK
104071d4279SBram Moolenaar" Condtional construct errors.
105071d4279SBram Moolenaarsyn match   kixIfError		"\<if\>\|\<else\>\|\<endif\>"
106071d4279SBram Moolenaarsyn match   kixIfOK		contained "\<if\>\|\<else\>\|\<endif\>"
107071d4279SBram Moolenaarsyn region  kixIf		transparent matchgroup=kixIfOK start="\<if\>" end="\<endif\>" contains=ALLBUT,@kixIfBut
108071d4279SBram Moolenaarsyn match   kixSelectError	"\<select\>\|\<case\>\|\<endselect\>"
109071d4279SBram Moolenaarsyn match   kixSelectOK		contained "\<select\>\|\<case\>\|\<endselect\>"
110071d4279SBram Moolenaarsyn region  kixSelect		transparent matchgroup=kixSelectOK start="\<select\>" end="\<endselect\>" contains=ALLBUT,@kixSelectBut
111071d4279SBram Moolenaar
112071d4279SBram Moolenaar" Program control constructs.
113071d4279SBram Moolenaarsyn match   kixDoError		"\<do\>\|\<until\>"
114071d4279SBram Moolenaarsyn match   kixDoOK		contained "\<do\>\|\<until\>"
115071d4279SBram Moolenaarsyn region  kixDo		transparent matchgroup=kixDoOK start="\<do\>" end="\<until\>" contains=ALLBUT,@kixDoBut
116071d4279SBram Moolenaarsyn match   kixWhileError	"\<while\>\|\<loop\>"
117071d4279SBram Moolenaarsyn match   kixWhileOK		contained "\<while\>\|\<loop\>"
118071d4279SBram Moolenaarsyn region  kixWhile		transparent matchgroup=kixWhileOK start="\<while\>" end="\<loop\>" contains=ALLBUT,@kixWhileBut
119071d4279SBram Moolenaarsyn match   kixForNextError	"\<for\>\|\<to\>\|\<step\>\|\<next\>"
120071d4279SBram Moolenaarsyn match   kixForNextOK	contained "\<for\>\|\<to\>\|\<step\>\|\<next\>"
121071d4279SBram Moolenaarsyn region  kixForNext		transparent matchgroup=kixForNextOK start="\<for\>" end="\<next\>" contains=ALLBUT,@kixForBut
122071d4279SBram Moolenaarsyn match   kixForEachError	"\<for each\>\|\<in\>\|\<next\>"
123071d4279SBram Moolenaarsyn match   kixForEachOK	contained "\<for each\>\|\<in\>\|\<next\>"
124071d4279SBram Moolenaarsyn region  kixForEach		transparent matchgroup=kixForEachOK start="\<for each\>" end="\<next\>" contains=ALLBUT,@kixForEachBut
125071d4279SBram Moolenaar
126071d4279SBram Moolenaar" Expressions
127071d4279SBram Moolenaarsyn match   kixExpression	"<\|>\|<=\|>=\|<>"
128071d4279SBram Moolenaar
129071d4279SBram Moolenaar
130071d4279SBram Moolenaar" Default highlighting.
13189bcfda6SBram Moolenaar" Set default highlight only if it doesn't already have a value.
132071d4279SBram Moolenaar
133*f37506f6SBram Moolenaarhi def link kixDoubleString		String
134*f37506f6SBram Moolenaarhi def link kixSingleString		String
135*f37506f6SBram Moolenaarhi def link kixStatement		Statement
136*f37506f6SBram Moolenaarhi def link kixRepeat		Repeat
137*f37506f6SBram Moolenaarhi def link kixComment		Comment
138*f37506f6SBram Moolenaarhi def link kixBuiltin		Function
139*f37506f6SBram Moolenaarhi def link kixLocalVar		Special
140*f37506f6SBram Moolenaarhi def link kixMacro			Special
141*f37506f6SBram Moolenaarhi def link kixEnvVar		Special
142*f37506f6SBram Moolenaarhi def link kixLabel			Type
143*f37506f6SBram Moolenaarhi def link kixFunction		Function
144*f37506f6SBram Moolenaarhi def link kixInteger		Number
145*f37506f6SBram Moolenaarhi def link kixHex			Number
146*f37506f6SBram Moolenaarhi def link kixFloat			Number
147*f37506f6SBram Moolenaarhi def link kixOperator		Operator
148*f37506f6SBram Moolenaarhi def link kixExpression		Operator
149071d4279SBram Moolenaar
150*f37506f6SBram Moolenaarhi def link kixParenCloseError	Error
151*f37506f6SBram Moolenaarhi def link kixBrackCloseError	Error
152*f37506f6SBram Moolenaarhi def link kixStringError		Error
153071d4279SBram Moolenaar
154*f37506f6SBram Moolenaarhi def link kixWhileError		Error
155*f37506f6SBram Moolenaarhi def link kixWhileOK		Conditional
156*f37506f6SBram Moolenaarhi def link kixDoError		Error
157*f37506f6SBram Moolenaarhi def link kixDoOK			Conditional
158*f37506f6SBram Moolenaarhi def link kixIfError		Error
159*f37506f6SBram Moolenaarhi def link kixIfOK			Conditional
160*f37506f6SBram Moolenaarhi def link kixSelectError		Error
161*f37506f6SBram Moolenaarhi def link kixSelectOK		Conditional
162*f37506f6SBram Moolenaarhi def link kixForNextError		Error
163*f37506f6SBram Moolenaarhi def link kixForNextOK		Conditional
164*f37506f6SBram Moolenaarhi def link kixForEachError		Error
165*f37506f6SBram Moolenaarhi def link kixForEachOK		Conditional
166071d4279SBram Moolenaar
167071d4279SBram Moolenaar
168071d4279SBram Moolenaarlet b:current_syntax = "kix"
169071d4279SBram Moolenaar
170071d4279SBram Moolenaar" vim: ts=8 sw=2
171