summaryrefslogtreecommitdiff
path: root/runtime/syntax/btm.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/btm.vim')
-rw-r--r--runtime/syntax/btm.vim229
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