1" 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 230