mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	
		
			
	
	
		
			183 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			183 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " 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 |