comparison runtime/syntax/dosbatch.vim @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children 53938adac247
comparison
equal deleted inserted replaced
6:c2daee826b8f 7:3fc0f57ecb91
1 " Vim syntax file
2 " Language: MSDOS batch file (with NT command extensions)
3 " Maintainer: Mike Williams <mrw@eandem.co.uk>
4 " Filenames: *.bat
5 " Last Change: 16th March 2004
6 " Web Page: http://www.eandem.co.uk/mrw/vim
7 "
8 " Options Flags:
9 " dosbatch_cmdextversion - 1 = Windows NT, 2 = Windows 2000 [default]
10 "
11
12 " For version 5.x: Clear all syntax items
13 " For version 6.x: Quit when a syntax file was already loaded
14 if version < 600
15 syntax clear
16 elseif exists("b:current_syntax")
17 finish
18 endif
19
20 " Set default highlighting to Win2k
21 if !exists("dosbatch_cmdextversion")
22 let dosbatch_cmdextversion = 2
23 endif
24
25 " DOS bat files are case insensitive but case preserving!
26 syn case ignore
27
28 syn keyword dosbatchTodo contained TODO
29
30 " Dosbat keywords
31 syn keyword dosbatchStatement goto call exit
32 syn keyword dosbatchConditional if else
33 syn keyword dosbatchRepeat for
34
35 " Some operators - first lot are case sensitive!
36 syn case match
37 syn keyword dosbatchOperator EQU NEQ LSS LEQ GTR GEQ
38 syn case ignore
39 syn match dosbatchOperator "\s[-+\*/%]\s"
40 syn match dosbatchOperator "="
41 syn match dosbatchOperator "[-+\*/%]="
42 syn match dosbatchOperator "\s\(&\||\|^\|<<\|>>\)=\=\s"
43 syn match dosbatchIfOperator "if\s\+\(\(not\)\=\s\+\)\=\(exist\|defined\|errorlevel\|cmdextversion\)\="lc=2
44
45 " String - using "'s is a convenience rather than a requirement outside of FOR
46 syn match dosbatchString "\"[^"]*\"" contains=dosbatchVariable,dosBatchArgument,@dosbatchNumber
47 syn match dosbatchString "\<echo[^)>|]*"lc=4 contains=dosbatchVariable,dosbatchArgument,@dosbatchNumber
48 syn match dosbatchEchoOperator "\<echo\s\+\(on\|off\)\s*$"lc=4
49
50 " For embedded commands
51 syn match dosbatchCmd "(\s*'[^']*'"lc=1 contains=dosbatchString,dosbatchVariable,dosBatchArgument,@dosbatchNumber,dosbatchImplicit,dosbatchStatement,dosbatchConditional,dosbatchRepeat,dosbatchOperator
52
53 " Numbers - surround with ws to not include in dir and filenames
54 syn match dosbatchInteger "[[:space:]=(/:]\d\+"lc=1
55 syn match dosbatchHex "[[:space:]=(/:]0x\x\+"lc=1
56 syn match dosbatchBinary "[[:space:]=(/:]0b[01]\+"lc=1
57 syn match dosbatchOctal "[[:space:]=(/:]0\o\+"lc=1
58 syn cluster dosbatchNumber contains=dosbatchInteger,dosbatchHex,dosbatchBinary,dosbatchOctal
59
60 " Command line switches
61 syn match dosbatchSwitch "/\(\a\+\|?\)"
62
63 " Various special escaped char formats
64 syn match dosbatchSpecialChar "\^[&|()<>^]"
65 syn match dosbatchSpecialChar "\$[a-hl-npqstv_$+]"
66 syn match dosbatchSpecialChar "%%"
67
68 " Environment variables
69 syn match dosbatchIdentifier contained "\s\h\w*\>"
70 syn match dosbatchVariable "%\h\w*%"
71 syn match dosbatchVariable "%\h\w*:\*\=[^=]*=[^%]*%"
72 syn match dosbatchVariable "%\h\w*:\~\d\+,\d\+%" contains=dosbatchInteger
73 syn match dosbatchVariable "!\h\w*!"
74 syn match dosbatchVariable "!\h\w*:\*\=[^=]*=[^%]*!"
75 syn match dosbatchVariable "!\h\w*:\~\d\+,\d\+!" contains=dosbatchInteger
76 syn match dosbatchSet "\s\h\w*[+-]\==\{-1}" contains=dosbatchIdentifier,dosbatchOperator
77
78 " Args to bat files and for loops, etc
79 syn match dosbatchArgument "%\(\d\|\*\)"
80 syn match dosbatchArgument "%%[a-z]\>"
81 if dosbatch_cmdextversion == 1
82 syn match dosbatchArgument "%\~[fdpnxs]\+\(\($PATH:\)\=[a-z]\|\d\)\>"
83 else
84 syn match dosbatchArgument "%\~[fdpnxsatz]\+\(\($PATH:\)\=[a-z]\|\d\)\>"
85 endif
86
87 " Line labels
88 syn match dosbatchLabel "^\s*:\s*\h\w*\>"
89 syn match dosbatchLabel "\<\(goto\|call\)\s\+:\h\w*\>"lc=4
90 syn match dosbatchLabel "\<goto\s\+\h\w*\>"lc=4
91 syn match dosbatchLabel ":\h\w*\>"
92
93 " Comments - usual rem but also two colons as first non-space is an idiom
94 syn match dosbatchComment "^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument
95 syn match dosbatchComment "\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument
96 syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument
97
98 " Comments in ()'s - still to handle spaces before rem
99 syn match dosbatchComment "(rem[^)]*"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument
100
101 syn keyword dosbatchImplicit append assoc at attrib break cacls cd chcp chdir
102 syn keyword dosbatchImplicit chkdsk chkntfs cls cmd color comp compact convert copy
103 syn keyword dosbatchImplicit date del dir diskcomp diskcopy doskey echo endlocal
104 syn keyword dosbatchImplicit erase fc find findstr format ftype
105 syn keyword dosbatchImplicit graftabl help keyb label md mkdir mode more move
106 syn keyword dosbatchImplicit path pause popd print prompt pushd rd recover rem
107 syn keyword dosbatchImplicit ren rename replace restore rmdir set setlocal shift
108 syn keyword dosbatchImplicit sort start subst time title tree type ver verify
109 syn keyword dosbatchImplicit vol xcopy
110
111 " Define the default highlighting.
112 " For version 5.7 and earlier: only when not done already
113 " For version 5.8 and later: only when an item doesn't have highlighting yet
114 if version >= 508 || !exists("did_dosbatch_syntax_inits")
115 if version < 508
116 let did_dosbatch_syntax_inits = 1
117 command -nargs=+ HiLink hi link <args>
118 else
119 command -nargs=+ HiLink hi def link <args>
120 endif
121
122 HiLink dosbatchTodo Todo
123
124 HiLink dosbatchStatement Statement
125 HiLink dosbatchCommands dosbatchStatement
126 HiLink dosbatchLabel Label
127 HiLink dosbatchConditional Conditional
128 HiLink dosbatchRepeat Repeat
129
130 HiLink dosbatchOperator Operator
131 HiLink dosbatchEchoOperator dosbatchOperator
132 HiLink dosbatchIfOperator dosbatchOperator
133
134 HiLink dosbatchArgument Identifier
135 HiLink dosbatchIdentifier Identifier
136 HiLink dosbatchVariable dosbatchIdentifier
137
138 HiLink dosbatchSpecialChar SpecialChar
139 HiLink dosbatchString String
140 HiLink dosbatchNumber Number
141 HiLink dosbatchInteger dosbatchNumber
142 HiLink dosbatchHex dosbatchNumber
143 HiLink dosbatchBinary dosbatchNumber
144 HiLink dosbatchOctal dosbatchNumber
145
146 HiLink dosbatchComment Comment
147 HiLink dosbatchImplicit Function
148
149 HiLink dosbatchSwitch Special
150
151 HiLink dosbatchCmd PreProc
152
153 delcommand HiLink
154 endif
155
156 let b:current_syntax = "dosbatch"
157
158 " vim: ts=8