blob: 4fd5b2db995090db6242248fdd3729f69b2a73dd [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: 4Dos batch file
3" Maintainer: John Leo Spetz <jls11@po.cwru.edu>
4" Last Change: 2001 May 09
5
6"//Issues to resolve:
7"//- Boolean operators surrounded by period are recognized but the
8"// periods are not highlighted. The only way to do that would
9"// be separate synmatches for each possibility otherwise a more
10"// general \.\i\+\. will highlight anything delimited by dots.
11"//- After unary operators like "defined" can assume token type.
12"// Should there be more of these?
13
14" For version 5.x: Clear all syntax items
15" For version 6.x: Quit when a syntax file was already loaded
16if version < 600
17 syntax clear
18elseif exists("b:current_syntax")
19 finish
20endif
21
22syn case ignore
23
24syn keyword btmStatement call off
25syn keyword btmConditional if iff endiff then else elseiff not errorlevel
26syn keyword btmConditional gt lt eq ne ge le
27syn match btmConditional transparent "\.\i\+\." contains=btmDotBoolOp
28syn keyword btmDotBoolOp contained and or xor
29syn match btmConditional "=="
30syn match btmConditional "!="
31syn keyword btmConditional defined errorlevel exist isalias
32syn keyword btmConditional isdir direxist isinternal islabel
33syn keyword btmRepeat for in do enddo
34
35syn keyword btmTodo contained TODO
36
37" String
38syn cluster btmVars contains=btmVariable,btmArgument,btmBIFMatch
39syn region btmString start=+"+ end=+"+ contains=@btmVars
40syn match btmNumber "\<\d\+\>"
41
42"syn match btmIdentifier "\<\h\w*\>"
43
44" If you don't like tabs
45"syn match btmShowTab "\t"
46"syn match btmShowTabc "\t"
47"syn match btmComment "^\ *rem.*$" contains=btmTodo,btmShowTabc
48
49" Some people use this as a comment line
50" In fact this is a Label
51"syn match btmComment "^\ *:\ \+.*$" contains=btmTodo
52
53syn match btmComment "^\ *rem.*$" contains=btmTodo
54syn match btmComment "^\ *::.*$" contains=btmTodo
55
56syn match btmLabelMark "^\ *:[0-9a-zA-Z_\-]\+\>"
57syn match btmLabelMark "goto [0-9a-zA-Z_\-]\+\>"lc=5
58syn match btmLabelMark "gosub [0-9a-zA-Z_\-]\+\>"lc=6
59
60" syn match btmCmdDivider ">[>&][>&]\="
61syn match btmCmdDivider ">[>&]*"
62syn match btmCmdDivider ">>&>"
63syn match btmCmdDivider "|&\="
64syn match btmCmdDivider "%+"
65syn match btmCmdDivider "\^"
66
67syn region btmEcho start="echo" skip="echo" matchgroup=btmCmdDivider end="%+" end="$" end="|&\=" end="\^" end=">[>&]*" contains=@btmEchos oneline
68syn cluster btmEchos contains=@btmVars,btmEchoCommand,btmEchoParam
69syn keyword btmEchoCommand contained echo echoerr echos echoserr
70syn keyword btmEchoParam contained on off
71
72" this is also a valid Label. I don't use it.
73"syn match btmLabelMark "^\ *:\ \+[0-9a-zA-Z_\-]\+\>"
74
75" //Environment variable can be expanded using notation %var in 4DOS
76syn match btmVariable "%[0-9a-z_\-]\+" contains=@btmSpecialVars
77" //Environment variable can be expanded using notation %var%
78syn match btmVariable "%[0-9a-z_\-]*%" contains=@btmSpecialVars
79" //The following are special variable in 4DOS
80syn match btmVariable "%[=#]" contains=@btmSpecialVars
81syn match btmVariable "%??\=" contains=@btmSpecialVars
82" //Environment variable can be expanded using notation %[var] in 4DOS
83syn match btmVariable "%\[[0-9a-z_\-]*\]"
84" //After some keywords next word should be an environment variable
85syn match btmVariable "defined\s\i\+"lc=8
86syn match btmVariable "set\s\i\+"lc=4
87" //Parameters to batchfiles take the format %<digit>
88syn match btmArgument "%\d\>"
89" //4DOS allows format %<digit>& meaning batchfile parameters digit and up
90syn match btmArgument "%\d\>&"
91" //Variable used by FOR loops sometimes use %%<letter> in batchfiles
92syn match btmArgument "%%\a\>"
93
94" //Show 4DOS built-in functions specially
95syn match btmBIFMatch "%@\w\+\["he=e-1 contains=btmBuiltInFunc
96syn keyword btmBuiltInFunc contained alias ascii attrib cdrom
97syn keyword btmBuiltInFunc contained char clip comma convert
98syn keyword btmBuiltInFunc contained date day dec descript
99syn keyword btmBuiltInFunc contained device diskfree disktotal
100syn keyword btmBuiltInFunc contained diskused dosmem dow dowi
101syn keyword btmBuiltInFunc contained doy ems eval exec execstr
102syn keyword btmBuiltInFunc contained expand ext extended
103syn keyword btmBuiltInFunc contained fileage fileclose filedate
104syn keyword btmBuiltInFunc contained filename fileopen fileread
105syn keyword btmBuiltInFunc contained files fileseek fileseekl
106syn keyword btmBuiltInFunc contained filesize filetime filewrite
107syn keyword btmBuiltInFunc contained filewriteb findclose
108syn keyword btmBuiltInFunc contained findfirst findnext format
109syn keyword btmBuiltInFunc contained full if inc index insert
110syn keyword btmBuiltInFunc contained instr int label left len
111syn keyword btmBuiltInFunc contained lfn line lines lower lpt
112syn keyword btmBuiltInFunc contained makeage makedate maketime
113syn keyword btmBuiltInFunc contained master month name numeric
114syn keyword btmBuiltInFunc contained path random readscr ready
115syn keyword btmBuiltInFunc contained remote removable repeat
116syn keyword btmBuiltInFunc contained replace right search
117syn keyword btmBuiltInFunc contained select sfn strip substr
118syn keyword btmBuiltInFunc contained time timer trim truename
119syn keyword btmBuiltInFunc contained unique upper wild word
120syn keyword btmBuiltInFunc contained words xms year
121
122syn cluster btmSpecialVars contains=btmBuiltInVar,btmSpecialVar
123
124" //Show specialized variables specially
125" syn match btmSpecialVar contained "+"
126syn match btmSpecialVar contained "="
127syn match btmSpecialVar contained "#"
128syn match btmSpecialVar contained "??\="
129syn keyword btmSpecialVar contained cmdline colordir comspec
130syn keyword btmSpecialVar contained copycmd dircmd temp temp4dos
131syn keyword btmSpecialVar contained filecompletion path prompt
132
133" //Show 4DOS built-in variables specially specially
134syn keyword btmBuiltInVar contained _4ver _alias _ansi
135syn keyword btmBuiltInVar contained _apbatt _aplife _apmac _batch
136syn keyword btmBuiltInVar contained _batchline _batchname _bg
137syn keyword btmBuiltInVar contained _boot _ci _cmdproc _co
138syn keyword btmBuiltInVar contained _codepage _column _columns
139syn keyword btmBuiltInVar contained _country _cpu _cwd _cwds _cwp
140syn keyword btmBuiltInVar contained _cwps _date _day _disk _dname
141syn keyword btmBuiltInVar contained _dos _dosver _dow _dowi _doy
142syn keyword btmBuiltInVar contained _dpmi _dv _env _fg _hlogfile
143syn keyword btmBuiltInVar contained _hour _kbhit _kstack _lastdisk
144syn keyword btmBuiltInVar contained _logfile _minute _monitor
145syn keyword btmBuiltInVar contained _month _mouse _ndp _row _rows
146syn keyword btmBuiltInVar contained _second _shell _swapping
147syn keyword btmBuiltInVar contained _syserr _time _transient
148syn keyword btmBuiltInVar contained _video _win _wintitle _year
149
150" //Commands in 4DOS and/or DOS
151syn match btmCommand "\s?"
152syn match btmCommand "^?"
153syn keyword btmCommand alias append assign attrib
154syn keyword btmCommand backup beep break cancel case
155syn keyword btmCommand cd cdd cdpath chcp chdir
156syn keyword btmCommand chkdsk cls color comp copy
157syn keyword btmCommand ctty date debug default defrag
158syn keyword btmCommand del delay describe dir
159syn keyword btmCommand dirhistory dirs diskcomp
160syn keyword btmCommand diskcopy doskey dosshell
161syn keyword btmCommand drawbox drawhline drawvline
162"syn keyword btmCommand echo echoerr echos echoserr
163syn keyword btmCommand edit edlin emm386 endlocal
164syn keyword btmCommand endswitch erase eset except
165syn keyword btmCommand exe2bin exit expand fastopen
166syn keyword btmCommand fc fdisk ffind find format
167syn keyword btmCommand free global gosub goto
168syn keyword btmCommand graftabl graphics help history
169syn keyword btmCommand inkey input join keyb keybd
170syn keyword btmCommand keystack label lh list loadbtm
171syn keyword btmCommand loadhigh lock log md mem
172syn keyword btmCommand memory mirror mkdir mode more
173syn keyword btmCommand move nlsfunc on option path
174syn keyword btmCommand pause popd print prompt pushd
175syn keyword btmCommand quit rd reboot recover ren
176syn keyword btmCommand rename replace restore return
177syn keyword btmCommand rmdir scandisk screen scrput
178syn keyword btmCommand select set setdos setlocal
179syn keyword btmCommand setver share shift sort subst
180syn keyword btmCommand swapping switch sys tee text
181syn keyword btmCommand time timer touch tree truename
182syn keyword btmCommand type unalias undelete unformat
183syn keyword btmCommand unlock unset ver verify vol
184syn keyword btmCommand vscrput y
185
186" Define the default highlighting.
187" For version 5.7 and earlier: only when not done already
188" For version 5.8 and later: only when an item doesn't have highlighting yet
189if version >= 508 || !exists("did_btm_syntax_inits")
190 if version < 508
191 let did_btm_syntax_inits = 1
192 command -nargs=+ HiLink hi link <args>
193 else
194 command -nargs=+ HiLink hi def link <args>
195 endif
196
197 HiLink btmLabel Special
198 HiLink btmLabelMark Special
199 HiLink btmCmdDivider Special
200 HiLink btmConditional btmStatement
201 HiLink btmDotBoolOp btmStatement
202 HiLink btmRepeat btmStatement
203 HiLink btmEchoCommand btmStatement
204 HiLink btmEchoParam btmStatement
205 HiLink btmStatement Statement
206 HiLink btmTodo Todo
207 HiLink btmString String
208 HiLink btmNumber Number
209 HiLink btmComment Comment
210 HiLink btmArgument Identifier
211 HiLink btmVariable Identifier
212 HiLink btmEcho String
213 HiLink btmBIFMatch btmStatement
214 HiLink btmBuiltInFunc btmStatement
215 HiLink btmBuiltInVar btmStatement
216 HiLink btmSpecialVar btmStatement
217 HiLink btmCommand btmStatement
218
219 "optional highlighting
220 "HiLink btmShowTab Error
221 "HiLink btmShowTabc Error
222 "hiLink btmIdentifier Identifier
223
224 delcommand HiLink
225endif
226
227let b:current_syntax = "btm"
228
229" vim: ts=8