forked from aniani/vim
		
	
		
			
				
	
	
		
			230 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			230 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" 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
 |