xref: /vim-8.2.3635/runtime/syntax/btm.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	4Dos batch file
3071d4279SBram Moolenaar" Maintainer:	John Leo Spetz <[email protected]>
4071d4279SBram Moolenaar" Last Change:	2001 May 09
5071d4279SBram Moolenaar
6071d4279SBram Moolenaar"//Issues to resolve:
7071d4279SBram Moolenaar"//- Boolean operators surrounded by period are recognized but the
8071d4279SBram Moolenaar"//  periods are not highlighted.  The only way to do that would
9071d4279SBram Moolenaar"//  be separate synmatches for each possibility otherwise a more
10071d4279SBram Moolenaar"//  general \.\i\+\. will highlight anything delimited by dots.
11071d4279SBram Moolenaar"//- After unary operators like "defined" can assume token type.
12071d4279SBram Moolenaar"//  Should there be more of these?
13071d4279SBram Moolenaar
1489bcfda6SBram Moolenaar" quit when a syntax file was already loaded
1589bcfda6SBram Moolenaarif exists("b:current_syntax")
16071d4279SBram Moolenaar  finish
17071d4279SBram Moolenaarendif
18071d4279SBram Moolenaar
19071d4279SBram Moolenaarsyn case ignore
20071d4279SBram Moolenaar
21071d4279SBram Moolenaarsyn keyword btmStatement	call off
22071d4279SBram Moolenaarsyn keyword btmConditional	if iff endiff then else elseiff not errorlevel
23071d4279SBram Moolenaarsyn keyword btmConditional	gt lt eq ne ge le
24071d4279SBram Moolenaarsyn match btmConditional transparent    "\.\i\+\." contains=btmDotBoolOp
25071d4279SBram Moolenaarsyn keyword btmDotBoolOp contained      and or xor
26071d4279SBram Moolenaarsyn match btmConditional	"=="
27071d4279SBram Moolenaarsyn match btmConditional	"!="
28071d4279SBram Moolenaarsyn keyword btmConditional	defined errorlevel exist isalias
29071d4279SBram Moolenaarsyn keyword btmConditional	isdir direxist isinternal islabel
30071d4279SBram Moolenaarsyn keyword btmRepeat		for in do enddo
31071d4279SBram Moolenaar
32071d4279SBram Moolenaarsyn keyword btmTodo contained	TODO
33071d4279SBram Moolenaar
34071d4279SBram Moolenaar" String
35071d4279SBram Moolenaarsyn cluster btmVars contains=btmVariable,btmArgument,btmBIFMatch
36071d4279SBram Moolenaarsyn region  btmString	start=+"+  end=+"+ contains=@btmVars
37071d4279SBram Moolenaarsyn match btmNumber     "\<\d\+\>"
38071d4279SBram Moolenaar
39071d4279SBram Moolenaar"syn match  btmIdentifier	"\<\h\w*\>"
40071d4279SBram Moolenaar
41071d4279SBram Moolenaar" If you don't like tabs
42071d4279SBram Moolenaar"syn match btmShowTab "\t"
43071d4279SBram Moolenaar"syn match btmShowTabc "\t"
44071d4279SBram Moolenaar"syn match  btmComment		"^\ *rem.*$" contains=btmTodo,btmShowTabc
45071d4279SBram Moolenaar
46071d4279SBram Moolenaar" Some people use this as a comment line
47071d4279SBram Moolenaar" In fact this is a Label
48071d4279SBram Moolenaar"syn match btmComment		"^\ *:\ \+.*$" contains=btmTodo
49071d4279SBram Moolenaar
50071d4279SBram Moolenaarsyn match btmComment		"^\ *rem.*$" contains=btmTodo
51071d4279SBram Moolenaarsyn match btmComment		"^\ *::.*$" contains=btmTodo
52071d4279SBram Moolenaar
53071d4279SBram Moolenaarsyn match btmLabelMark		"^\ *:[0-9a-zA-Z_\-]\+\>"
54071d4279SBram Moolenaarsyn match btmLabelMark		"goto [0-9a-zA-Z_\-]\+\>"lc=5
55071d4279SBram Moolenaarsyn match btmLabelMark		"gosub [0-9a-zA-Z_\-]\+\>"lc=6
56071d4279SBram Moolenaar
57071d4279SBram Moolenaar" syn match btmCmdDivider ">[>&][>&]\="
58071d4279SBram Moolenaarsyn match btmCmdDivider ">[>&]*"
59071d4279SBram Moolenaarsyn match btmCmdDivider ">>&>"
60071d4279SBram Moolenaarsyn match btmCmdDivider "|&\="
61071d4279SBram Moolenaarsyn match btmCmdDivider "%+"
62071d4279SBram Moolenaarsyn match btmCmdDivider "\^"
63071d4279SBram Moolenaar
64071d4279SBram Moolenaarsyn region btmEcho start="echo" skip="echo" matchgroup=btmCmdDivider end="%+" end="$" end="|&\=" end="\^" end=">[>&]*" contains=@btmEchos oneline
65071d4279SBram Moolenaarsyn cluster btmEchos contains=@btmVars,btmEchoCommand,btmEchoParam
66071d4279SBram Moolenaarsyn keyword btmEchoCommand contained	echo echoerr echos echoserr
67071d4279SBram Moolenaarsyn keyword btmEchoParam contained	on off
68071d4279SBram Moolenaar
69071d4279SBram Moolenaar" this is also a valid Label. I don't use it.
70071d4279SBram Moolenaar"syn match btmLabelMark		"^\ *:\ \+[0-9a-zA-Z_\-]\+\>"
71071d4279SBram Moolenaar
72071d4279SBram Moolenaar" //Environment variable can be expanded using notation %var in 4DOS
73071d4279SBram Moolenaarsyn match btmVariable		"%[0-9a-z_\-]\+" contains=@btmSpecialVars
74071d4279SBram Moolenaar" //Environment variable can be expanded using notation %var%
75071d4279SBram Moolenaarsyn match btmVariable		"%[0-9a-z_\-]*%" contains=@btmSpecialVars
76071d4279SBram Moolenaar" //The following are special variable in 4DOS
77071d4279SBram Moolenaarsyn match btmVariable		"%[=#]" contains=@btmSpecialVars
78071d4279SBram Moolenaarsyn match btmVariable		"%??\=" contains=@btmSpecialVars
79071d4279SBram Moolenaar" //Environment variable can be expanded using notation %[var] in 4DOS
80071d4279SBram Moolenaarsyn match btmVariable		"%\[[0-9a-z_\-]*\]"
81071d4279SBram Moolenaar" //After some keywords next word should be an environment variable
82071d4279SBram Moolenaarsyn match btmVariable		"defined\s\i\+"lc=8
83071d4279SBram Moolenaarsyn match btmVariable		"set\s\i\+"lc=4
84071d4279SBram Moolenaar" //Parameters to batchfiles take the format %<digit>
85071d4279SBram Moolenaarsyn match btmArgument		"%\d\>"
86071d4279SBram Moolenaar" //4DOS allows format %<digit>& meaning batchfile parameters digit and up
87071d4279SBram Moolenaarsyn match btmArgument		"%\d\>&"
88071d4279SBram Moolenaar" //Variable used by FOR loops sometimes use %%<letter> in batchfiles
89071d4279SBram Moolenaarsyn match btmArgument		"%%\a\>"
90071d4279SBram Moolenaar
91071d4279SBram Moolenaar" //Show 4DOS built-in functions specially
92071d4279SBram Moolenaarsyn match btmBIFMatch "%@\w\+\["he=e-1 contains=btmBuiltInFunc
93071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	alias ascii attrib cdrom
94071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	char clip comma convert
95071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	date day dec descript
96071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	device diskfree disktotal
97071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	diskused dosmem dow dowi
98071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	doy ems eval exec execstr
99071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	expand ext extended
100071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	fileage fileclose filedate
101071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	filename fileopen fileread
102071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	files fileseek fileseekl
103071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	filesize filetime filewrite
104071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	filewriteb findclose
105071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	findfirst findnext format
106071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	full if inc index insert
107071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	instr int label left len
108071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	lfn line lines lower lpt
109071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	makeage makedate maketime
110071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	master month name numeric
111071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	path random readscr ready
112071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	remote removable repeat
113071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	replace right search
114071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	select sfn strip substr
115071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	time timer trim truename
116071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	unique upper wild word
117071d4279SBram Moolenaarsyn keyword btmBuiltInFunc contained	words xms year
118071d4279SBram Moolenaar
119071d4279SBram Moolenaarsyn cluster btmSpecialVars contains=btmBuiltInVar,btmSpecialVar
120071d4279SBram Moolenaar
121071d4279SBram Moolenaar" //Show specialized variables specially
122071d4279SBram Moolenaar" syn match btmSpecialVar contained	"+"
123071d4279SBram Moolenaarsyn match btmSpecialVar contained	"="
124071d4279SBram Moolenaarsyn match btmSpecialVar contained	"#"
125071d4279SBram Moolenaarsyn match btmSpecialVar contained	"??\="
126071d4279SBram Moolenaarsyn keyword btmSpecialVar contained	cmdline colordir comspec
127071d4279SBram Moolenaarsyn keyword btmSpecialVar contained	copycmd dircmd temp temp4dos
128071d4279SBram Moolenaarsyn keyword btmSpecialVar contained	filecompletion path prompt
129071d4279SBram Moolenaar
130071d4279SBram Moolenaar" //Show 4DOS built-in variables specially specially
131071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_4ver _alias _ansi
132071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_apbatt _aplife _apmac _batch
133071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_batchline _batchname _bg
134071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_boot _ci _cmdproc _co
135071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_codepage _column _columns
136071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_country _cpu _cwd _cwds _cwp
137071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_cwps _date _day _disk _dname
138071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_dos _dosver _dow _dowi _doy
139071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_dpmi _dv _env _fg _hlogfile
140071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_hour _kbhit _kstack _lastdisk
141071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_logfile _minute _monitor
142071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_month _mouse _ndp _row _rows
143071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_second _shell _swapping
144071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_syserr _time _transient
145071d4279SBram Moolenaarsyn keyword btmBuiltInVar contained	_video _win _wintitle _year
146071d4279SBram Moolenaar
147071d4279SBram Moolenaar" //Commands in 4DOS and/or DOS
148071d4279SBram Moolenaarsyn match btmCommand	"\s?"
149071d4279SBram Moolenaarsyn match btmCommand	"^?"
150071d4279SBram Moolenaarsyn keyword btmCommand	alias append assign attrib
151071d4279SBram Moolenaarsyn keyword btmCommand	backup beep break cancel case
152071d4279SBram Moolenaarsyn keyword btmCommand	cd cdd cdpath chcp chdir
153071d4279SBram Moolenaarsyn keyword btmCommand	chkdsk cls color comp copy
154071d4279SBram Moolenaarsyn keyword btmCommand	ctty date debug default defrag
155071d4279SBram Moolenaarsyn keyword btmCommand	del delay describe dir
156071d4279SBram Moolenaarsyn keyword btmCommand	dirhistory dirs diskcomp
157071d4279SBram Moolenaarsyn keyword btmCommand	diskcopy doskey dosshell
158071d4279SBram Moolenaarsyn keyword btmCommand	drawbox drawhline drawvline
159071d4279SBram Moolenaar"syn keyword btmCommand	echo echoerr echos echoserr
160071d4279SBram Moolenaarsyn keyword btmCommand	edit edlin emm386 endlocal
161071d4279SBram Moolenaarsyn keyword btmCommand	endswitch erase eset except
162071d4279SBram Moolenaarsyn keyword btmCommand	exe2bin exit expand fastopen
163071d4279SBram Moolenaarsyn keyword btmCommand	fc fdisk ffind find format
164071d4279SBram Moolenaarsyn keyword btmCommand	free global gosub goto
165071d4279SBram Moolenaarsyn keyword btmCommand	graftabl graphics help history
166071d4279SBram Moolenaarsyn keyword btmCommand	inkey input join keyb keybd
167071d4279SBram Moolenaarsyn keyword btmCommand	keystack label lh list loadbtm
168071d4279SBram Moolenaarsyn keyword btmCommand	loadhigh lock log md mem
169071d4279SBram Moolenaarsyn keyword btmCommand	memory mirror mkdir mode more
170071d4279SBram Moolenaarsyn keyword btmCommand	move nlsfunc on option path
171071d4279SBram Moolenaarsyn keyword btmCommand	pause popd print prompt pushd
172071d4279SBram Moolenaarsyn keyword btmCommand	quit rd reboot recover ren
173071d4279SBram Moolenaarsyn keyword btmCommand	rename replace restore return
174071d4279SBram Moolenaarsyn keyword btmCommand	rmdir scandisk screen scrput
175071d4279SBram Moolenaarsyn keyword btmCommand	select set setdos setlocal
176071d4279SBram Moolenaarsyn keyword btmCommand	setver share shift sort subst
177071d4279SBram Moolenaarsyn keyword btmCommand	swapping switch sys tee text
178071d4279SBram Moolenaarsyn keyword btmCommand	time timer touch tree truename
179071d4279SBram Moolenaarsyn keyword btmCommand	type unalias undelete unformat
180071d4279SBram Moolenaarsyn keyword btmCommand	unlock unset ver verify vol
181071d4279SBram Moolenaarsyn keyword btmCommand	vscrput y
182071d4279SBram Moolenaar
183071d4279SBram Moolenaar" Define the default highlighting.
18489bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
185071d4279SBram Moolenaar
186*f37506f6SBram Moolenaarhi def link btmLabel		Special
187*f37506f6SBram Moolenaarhi def link btmLabelMark		Special
188*f37506f6SBram Moolenaarhi def link btmCmdDivider		Special
189*f37506f6SBram Moolenaarhi def link btmConditional		btmStatement
190*f37506f6SBram Moolenaarhi def link btmDotBoolOp		btmStatement
191*f37506f6SBram Moolenaarhi def link btmRepeat		btmStatement
192*f37506f6SBram Moolenaarhi def link btmEchoCommand	btmStatement
193*f37506f6SBram Moolenaarhi def link btmEchoParam		btmStatement
194*f37506f6SBram Moolenaarhi def link btmStatement		Statement
195*f37506f6SBram Moolenaarhi def link btmTodo		Todo
196*f37506f6SBram Moolenaarhi def link btmString		String
197*f37506f6SBram Moolenaarhi def link btmNumber		Number
198*f37506f6SBram Moolenaarhi def link btmComment		Comment
199*f37506f6SBram Moolenaarhi def link btmArgument		Identifier
200*f37506f6SBram Moolenaarhi def link btmVariable		Identifier
201*f37506f6SBram Moolenaarhi def link btmEcho		String
202*f37506f6SBram Moolenaarhi def link btmBIFMatch		btmStatement
203*f37506f6SBram Moolenaarhi def link btmBuiltInFunc		btmStatement
204*f37506f6SBram Moolenaarhi def link btmBuiltInVar		btmStatement
205*f37506f6SBram Moolenaarhi def link btmSpecialVar		btmStatement
206*f37506f6SBram Moolenaarhi def link btmCommand		btmStatement
207071d4279SBram Moolenaar
208071d4279SBram Moolenaar"optional highlighting
209*f37506f6SBram Moolenaar"hi def link btmShowTab		Error
210*f37506f6SBram Moolenaar"hi def link btmShowTabc		Error
211*f37506f6SBram Moolenaar"hi def link btmIdentifier		Identifier
212071d4279SBram Moolenaar
213071d4279SBram Moolenaar
214071d4279SBram Moolenaarlet b:current_syntax = "btm"
215071d4279SBram Moolenaar
216071d4279SBram Moolenaar" vim: ts=8
217