" Vim syntax file " Language: 4Dos batch file " Maintainer: John Leo Spetz " Last Change: 2001 May 09 "//Issues to resolve: "//- Boolean operators surrounded by period are recognized but the "// periods are not highlighted. The only way to do that would "// be separate synmatches for each possibility otherwise a more "// general \.\i\+\. will highlight anything delimited by dots. "//- After unary operators like "defined" can assume token type. "// Should there be more of these? " For version 5.x: Clear all syntax items " For version 6.x: Quit when a syntax file was already loaded if version < 600 syntax clear elseif exists("b:current_syntax") finish endif syn case ignore syn keyword btmStatement call off syn keyword btmConditional if iff endiff then else elseiff not errorlevel syn keyword btmConditional gt lt eq ne ge le syn match btmConditional transparent "\.\i\+\." contains=btmDotBoolOp syn keyword btmDotBoolOp contained and or xor syn match btmConditional "==" syn match btmConditional "!=" syn keyword btmConditional defined errorlevel exist isalias syn keyword btmConditional isdir direxist isinternal islabel syn keyword btmRepeat for in do enddo syn keyword btmTodo contained TODO " String syn cluster btmVars contains=btmVariable,btmArgument,btmBIFMatch syn region btmString start=+"+ end=+"+ contains=@btmVars syn match btmNumber "\<\d\+\>" "syn match btmIdentifier "\<\h\w*\>" " If you don't like tabs "syn match btmShowTab "\t" "syn match btmShowTabc "\t" "syn match btmComment "^\ *rem.*$" contains=btmTodo,btmShowTabc " Some people use this as a comment line " In fact this is a Label "syn match btmComment "^\ *:\ \+.*$" contains=btmTodo syn match btmComment "^\ *rem.*$" contains=btmTodo syn match btmComment "^\ *::.*$" contains=btmTodo syn match btmLabelMark "^\ *:[0-9a-zA-Z_\-]\+\>" syn match btmLabelMark "goto [0-9a-zA-Z_\-]\+\>"lc=5 syn match btmLabelMark "gosub [0-9a-zA-Z_\-]\+\>"lc=6 " syn match btmCmdDivider ">[>&][>&]\=" syn match btmCmdDivider ">[>&]*" syn match btmCmdDivider ">>&>" syn match btmCmdDivider "|&\=" syn match btmCmdDivider "%+" syn match btmCmdDivider "\^" syn region btmEcho start="echo" skip="echo" matchgroup=btmCmdDivider end="%+" end="$" end="|&\=" end="\^" end=">[>&]*" contains=@btmEchos oneline syn cluster btmEchos contains=@btmVars,btmEchoCommand,btmEchoParam syn keyword btmEchoCommand contained echo echoerr echos echoserr syn keyword btmEchoParam contained on off " this is also a valid Label. I don't use it. "syn match btmLabelMark "^\ *:\ \+[0-9a-zA-Z_\-]\+\>" " //Environment variable can be expanded using notation %var in 4DOS syn match btmVariable "%[0-9a-z_\-]\+" contains=@btmSpecialVars " //Environment variable can be expanded using notation %var% syn match btmVariable "%[0-9a-z_\-]*%" contains=@btmSpecialVars " //The following are special variable in 4DOS syn match btmVariable "%[=#]" contains=@btmSpecialVars syn match btmVariable "%??\=" contains=@btmSpecialVars " //Environment variable can be expanded using notation %[var] in 4DOS syn match btmVariable "%\[[0-9a-z_\-]*\]" " //After some keywords next word should be an environment variable syn match btmVariable "defined\s\i\+"lc=8 syn match btmVariable "set\s\i\+"lc=4 " //Parameters to batchfiles take the format % syn match btmArgument "%\d\>" " //4DOS allows format %& meaning batchfile parameters digit and up syn match btmArgument "%\d\>&" " //Variable used by FOR loops sometimes use %% in batchfiles syn match btmArgument "%%\a\>" " //Show 4DOS built-in functions specially syn match btmBIFMatch "%@\w\+\["he=e-1 contains=btmBuiltInFunc syn keyword btmBuiltInFunc contained alias ascii attrib cdrom syn keyword btmBuiltInFunc contained char clip comma convert syn keyword btmBuiltInFunc contained date day dec descript syn keyword btmBuiltInFunc contained device diskfree disktotal syn keyword btmBuiltInFunc contained diskused dosmem dow dowi syn keyword btmBuiltInFunc contained doy ems eval exec execstr syn keyword btmBuiltInFunc contained expand ext extended syn keyword btmBuiltInFunc contained fileage fileclose filedate syn keyword btmBuiltInFunc contained filename fileopen fileread syn keyword btmBuiltInFunc contained files fileseek fileseekl syn keyword btmBuiltInFunc contained filesize filetime filewrite syn keyword btmBuiltInFunc contained filewriteb findclose syn keyword btmBuiltInFunc contained findfirst findnext format syn keyword btmBuiltInFunc contained full if inc index insert syn keyword btmBuiltInFunc contained instr int label left len syn keyword btmBuiltInFunc contained lfn line lines lower lpt syn keyword btmBuiltInFunc contained makeage makedate maketime syn keyword btmBuiltInFunc contained master month name numeric syn keyword btmBuiltInFunc contained path random readscr ready syn keyword btmBuiltInFunc contained remote removable repeat syn keyword btmBuiltInFunc contained replace right search syn keyword btmBuiltInFunc contained select sfn strip substr syn keyword btmBuiltInFunc contained time timer trim truename syn keyword btmBuiltInFunc contained unique upper wild word syn keyword btmBuiltInFunc contained words xms year syn cluster btmSpecialVars contains=btmBuiltInVar,btmSpecialVar " //Show specialized variables specially " syn match btmSpecialVar contained "+" syn match btmSpecialVar contained "=" syn match btmSpecialVar contained "#" syn match btmSpecialVar contained "??\=" syn keyword btmSpecialVar contained cmdline colordir comspec syn keyword btmSpecialVar contained copycmd dircmd temp temp4dos syn keyword btmSpecialVar contained filecompletion path prompt " //Show 4DOS built-in variables specially specially syn keyword btmBuiltInVar contained _4ver _alias _ansi syn keyword btmBuiltInVar contained _apbatt _aplife _apmac _batch syn keyword btmBuiltInVar contained _batchline _batchname _bg syn keyword btmBuiltInVar contained _boot _ci _cmdproc _co syn keyword btmBuiltInVar contained _codepage _column _columns syn keyword btmBuiltInVar contained _country _cpu _cwd _cwds _cwp syn keyword btmBuiltInVar contained _cwps _date _day _disk _dname syn keyword btmBuiltInVar contained _dos _dosver _dow _dowi _doy syn keyword btmBuiltInVar contained _dpmi _dv _env _fg _hlogfile syn keyword btmBuiltInVar contained _hour _kbhit _kstack _lastdisk syn keyword btmBuiltInVar contained _logfile _minute _monitor syn keyword btmBuiltInVar contained _month _mouse _ndp _row _rows syn keyword btmBuiltInVar contained _second _shell _swapping syn keyword btmBuiltInVar contained _syserr _time _transient syn keyword btmBuiltInVar contained _video _win _wintitle _year " //Commands in 4DOS and/or DOS syn match btmCommand "\s?" syn match btmCommand "^?" syn keyword btmCommand alias append assign attrib syn keyword btmCommand backup beep break cancel case syn keyword btmCommand cd cdd cdpath chcp chdir syn keyword btmCommand chkdsk cls color comp copy syn keyword btmCommand ctty date debug default defrag syn keyword btmCommand del delay describe dir syn keyword btmCommand dirhistory dirs diskcomp syn keyword btmCommand diskcopy doskey dosshell syn keyword btmCommand drawbox drawhline drawvline "syn keyword btmCommand echo echoerr echos echoserr syn keyword btmCommand edit edlin emm386 endlocal syn keyword btmCommand endswitch erase eset except syn keyword btmCommand exe2bin exit expand fastopen syn keyword btmCommand fc fdisk ffind find format syn keyword btmCommand free global gosub goto syn keyword btmCommand graftabl graphics help history syn keyword btmCommand inkey input join keyb keybd syn keyword btmCommand keystack label lh list loadbtm syn keyword btmCommand loadhigh lock log md mem syn keyword btmCommand memory mirror mkdir mode more syn keyword btmCommand move nlsfunc on option path syn keyword btmCommand pause popd print prompt pushd syn keyword btmCommand quit rd reboot recover ren syn keyword btmCommand rename replace restore return syn keyword btmCommand rmdir scandisk screen scrput syn keyword btmCommand select set setdos setlocal syn keyword btmCommand setver share shift sort subst syn keyword btmCommand swapping switch sys tee text syn keyword btmCommand time timer touch tree truename syn keyword btmCommand type unalias undelete unformat syn keyword btmCommand unlock unset ver verify vol syn keyword btmCommand vscrput y " Define the default highlighting. " For version 5.7 and earlier: only when not done already " For version 5.8 and later: only when an item doesn't have highlighting yet if version >= 508 || !exists("did_btm_syntax_inits") if version < 508 let did_btm_syntax_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink btmLabel Special HiLink btmLabelMark Special HiLink btmCmdDivider Special HiLink btmConditional btmStatement HiLink btmDotBoolOp btmStatement HiLink btmRepeat btmStatement HiLink btmEchoCommand btmStatement HiLink btmEchoParam btmStatement HiLink btmStatement Statement HiLink btmTodo Todo HiLink btmString String HiLink btmNumber Number HiLink btmComment Comment HiLink btmArgument Identifier HiLink btmVariable Identifier HiLink btmEcho String HiLink btmBIFMatch btmStatement HiLink btmBuiltInFunc btmStatement HiLink btmBuiltInVar btmStatement HiLink btmSpecialVar btmStatement HiLink btmCommand btmStatement "optional highlighting "HiLink btmShowTab Error "HiLink btmShowTabc Error "hiLink btmIdentifier Identifier delcommand HiLink endif let b:current_syntax = "btm" " vim: ts=8