diff options
Diffstat (limited to 'runtime/syntax/btm.vim')
-rw-r--r-- | runtime/syntax/btm.vim | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/runtime/syntax/btm.vim b/runtime/syntax/btm.vim new file mode 100644 index 000000000..4fd5b2db9 --- /dev/null +++ b/runtime/syntax/btm.vim @@ -0,0 +1,229 @@ +" Vim syntax file +" Language: 4Dos batch file +" Maintainer: John Leo Spetz <jls11@po.cwru.edu> +" 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 %<digit> +syn match btmArgument "%\d\>" +" //4DOS allows format %<digit>& meaning batchfile parameters digit and up +syn match btmArgument "%\d\>&" +" //Variable used by FOR loops sometimes use %%<letter> 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 <args> + else + command -nargs=+ HiLink hi def link <args> + 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 |