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
 |