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