Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: 4Dos batch file |
| 3 | " Maintainer: John Leo Spetz <jls11@po.cwru.edu> |
| 4 | " Last Change: 2001 May 09 |
| 5 | |
| 6 | "//Issues to resolve: |
| 7 | "//- Boolean operators surrounded by period are recognized but the |
| 8 | "// periods are not highlighted. The only way to do that would |
| 9 | "// be separate synmatches for each possibility otherwise a more |
| 10 | "// general \.\i\+\. will highlight anything delimited by dots. |
| 11 | "//- After unary operators like "defined" can assume token type. |
| 12 | "// Should there be more of these? |
| 13 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 14 | " quit when a syntax file was already loaded |
| 15 | if exists("b:current_syntax") |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 16 | finish |
| 17 | endif |
| 18 | |
| 19 | syn case ignore |
| 20 | |
| 21 | syn keyword btmStatement call off |
| 22 | syn keyword btmConditional if iff endiff then else elseiff not errorlevel |
| 23 | syn keyword btmConditional gt lt eq ne ge le |
| 24 | syn match btmConditional transparent "\.\i\+\." contains=btmDotBoolOp |
| 25 | syn keyword btmDotBoolOp contained and or xor |
| 26 | syn match btmConditional "==" |
| 27 | syn match btmConditional "!=" |
| 28 | syn keyword btmConditional defined errorlevel exist isalias |
| 29 | syn keyword btmConditional isdir direxist isinternal islabel |
| 30 | syn keyword btmRepeat for in do enddo |
| 31 | |
| 32 | syn keyword btmTodo contained TODO |
| 33 | |
| 34 | " String |
| 35 | syn cluster btmVars contains=btmVariable,btmArgument,btmBIFMatch |
| 36 | syn region btmString start=+"+ end=+"+ contains=@btmVars |
| 37 | syn match btmNumber "\<\d\+\>" |
| 38 | |
| 39 | "syn match btmIdentifier "\<\h\w*\>" |
| 40 | |
| 41 | " If you don't like tabs |
| 42 | "syn match btmShowTab "\t" |
| 43 | "syn match btmShowTabc "\t" |
| 44 | "syn match btmComment "^\ *rem.*$" contains=btmTodo,btmShowTabc |
| 45 | |
| 46 | " Some people use this as a comment line |
| 47 | " In fact this is a Label |
| 48 | "syn match btmComment "^\ *:\ \+.*$" contains=btmTodo |
| 49 | |
| 50 | syn match btmComment "^\ *rem.*$" contains=btmTodo |
| 51 | syn match btmComment "^\ *::.*$" contains=btmTodo |
| 52 | |
| 53 | syn match btmLabelMark "^\ *:[0-9a-zA-Z_\-]\+\>" |
| 54 | syn match btmLabelMark "goto [0-9a-zA-Z_\-]\+\>"lc=5 |
| 55 | syn match btmLabelMark "gosub [0-9a-zA-Z_\-]\+\>"lc=6 |
| 56 | |
| 57 | " syn match btmCmdDivider ">[>&][>&]\=" |
| 58 | syn match btmCmdDivider ">[>&]*" |
| 59 | syn match btmCmdDivider ">>&>" |
| 60 | syn match btmCmdDivider "|&\=" |
| 61 | syn match btmCmdDivider "%+" |
| 62 | syn match btmCmdDivider "\^" |
| 63 | |
| 64 | syn region btmEcho start="echo" skip="echo" matchgroup=btmCmdDivider end="%+" end="$" end="|&\=" end="\^" end=">[>&]*" contains=@btmEchos oneline |
| 65 | syn cluster btmEchos contains=@btmVars,btmEchoCommand,btmEchoParam |
| 66 | syn keyword btmEchoCommand contained echo echoerr echos echoserr |
| 67 | syn keyword btmEchoParam contained on off |
| 68 | |
| 69 | " this is also a valid Label. I don't use it. |
| 70 | "syn match btmLabelMark "^\ *:\ \+[0-9a-zA-Z_\-]\+\>" |
| 71 | |
| 72 | " //Environment variable can be expanded using notation %var in 4DOS |
| 73 | syn match btmVariable "%[0-9a-z_\-]\+" contains=@btmSpecialVars |
| 74 | " //Environment variable can be expanded using notation %var% |
| 75 | syn match btmVariable "%[0-9a-z_\-]*%" contains=@btmSpecialVars |
| 76 | " //The following are special variable in 4DOS |
| 77 | syn match btmVariable "%[=#]" contains=@btmSpecialVars |
| 78 | syn match btmVariable "%??\=" contains=@btmSpecialVars |
| 79 | " //Environment variable can be expanded using notation %[var] in 4DOS |
| 80 | syn match btmVariable "%\[[0-9a-z_\-]*\]" |
| 81 | " //After some keywords next word should be an environment variable |
| 82 | syn match btmVariable "defined\s\i\+"lc=8 |
| 83 | syn match btmVariable "set\s\i\+"lc=4 |
| 84 | " //Parameters to batchfiles take the format %<digit> |
| 85 | syn match btmArgument "%\d\>" |
| 86 | " //4DOS allows format %<digit>& meaning batchfile parameters digit and up |
| 87 | syn match btmArgument "%\d\>&" |
| 88 | " //Variable used by FOR loops sometimes use %%<letter> in batchfiles |
| 89 | syn match btmArgument "%%\a\>" |
| 90 | |
| 91 | " //Show 4DOS built-in functions specially |
| 92 | syn match btmBIFMatch "%@\w\+\["he=e-1 contains=btmBuiltInFunc |
| 93 | syn keyword btmBuiltInFunc contained alias ascii attrib cdrom |
| 94 | syn keyword btmBuiltInFunc contained char clip comma convert |
| 95 | syn keyword btmBuiltInFunc contained date day dec descript |
| 96 | syn keyword btmBuiltInFunc contained device diskfree disktotal |
| 97 | syn keyword btmBuiltInFunc contained diskused dosmem dow dowi |
| 98 | syn keyword btmBuiltInFunc contained doy ems eval exec execstr |
| 99 | syn keyword btmBuiltInFunc contained expand ext extended |
| 100 | syn keyword btmBuiltInFunc contained fileage fileclose filedate |
| 101 | syn keyword btmBuiltInFunc contained filename fileopen fileread |
| 102 | syn keyword btmBuiltInFunc contained files fileseek fileseekl |
| 103 | syn keyword btmBuiltInFunc contained filesize filetime filewrite |
| 104 | syn keyword btmBuiltInFunc contained filewriteb findclose |
| 105 | syn keyword btmBuiltInFunc contained findfirst findnext format |
| 106 | syn keyword btmBuiltInFunc contained full if inc index insert |
| 107 | syn keyword btmBuiltInFunc contained instr int label left len |
| 108 | syn keyword btmBuiltInFunc contained lfn line lines lower lpt |
| 109 | syn keyword btmBuiltInFunc contained makeage makedate maketime |
| 110 | syn keyword btmBuiltInFunc contained master month name numeric |
| 111 | syn keyword btmBuiltInFunc contained path random readscr ready |
| 112 | syn keyword btmBuiltInFunc contained remote removable repeat |
| 113 | syn keyword btmBuiltInFunc contained replace right search |
| 114 | syn keyword btmBuiltInFunc contained select sfn strip substr |
| 115 | syn keyword btmBuiltInFunc contained time timer trim truename |
| 116 | syn keyword btmBuiltInFunc contained unique upper wild word |
| 117 | syn keyword btmBuiltInFunc contained words xms year |
| 118 | |
| 119 | syn cluster btmSpecialVars contains=btmBuiltInVar,btmSpecialVar |
| 120 | |
| 121 | " //Show specialized variables specially |
| 122 | " syn match btmSpecialVar contained "+" |
| 123 | syn match btmSpecialVar contained "=" |
| 124 | syn match btmSpecialVar contained "#" |
| 125 | syn match btmSpecialVar contained "??\=" |
| 126 | syn keyword btmSpecialVar contained cmdline colordir comspec |
| 127 | syn keyword btmSpecialVar contained copycmd dircmd temp temp4dos |
| 128 | syn keyword btmSpecialVar contained filecompletion path prompt |
| 129 | |
| 130 | " //Show 4DOS built-in variables specially specially |
| 131 | syn keyword btmBuiltInVar contained _4ver _alias _ansi |
| 132 | syn keyword btmBuiltInVar contained _apbatt _aplife _apmac _batch |
| 133 | syn keyword btmBuiltInVar contained _batchline _batchname _bg |
| 134 | syn keyword btmBuiltInVar contained _boot _ci _cmdproc _co |
| 135 | syn keyword btmBuiltInVar contained _codepage _column _columns |
| 136 | syn keyword btmBuiltInVar contained _country _cpu _cwd _cwds _cwp |
| 137 | syn keyword btmBuiltInVar contained _cwps _date _day _disk _dname |
| 138 | syn keyword btmBuiltInVar contained _dos _dosver _dow _dowi _doy |
| 139 | syn keyword btmBuiltInVar contained _dpmi _dv _env _fg _hlogfile |
| 140 | syn keyword btmBuiltInVar contained _hour _kbhit _kstack _lastdisk |
| 141 | syn keyword btmBuiltInVar contained _logfile _minute _monitor |
| 142 | syn keyword btmBuiltInVar contained _month _mouse _ndp _row _rows |
| 143 | syn keyword btmBuiltInVar contained _second _shell _swapping |
| 144 | syn keyword btmBuiltInVar contained _syserr _time _transient |
| 145 | syn keyword btmBuiltInVar contained _video _win _wintitle _year |
| 146 | |
| 147 | " //Commands in 4DOS and/or DOS |
| 148 | syn match btmCommand "\s?" |
| 149 | syn match btmCommand "^?" |
| 150 | syn keyword btmCommand alias append assign attrib |
| 151 | syn keyword btmCommand backup beep break cancel case |
| 152 | syn keyword btmCommand cd cdd cdpath chcp chdir |
| 153 | syn keyword btmCommand chkdsk cls color comp copy |
| 154 | syn keyword btmCommand ctty date debug default defrag |
| 155 | syn keyword btmCommand del delay describe dir |
| 156 | syn keyword btmCommand dirhistory dirs diskcomp |
| 157 | syn keyword btmCommand diskcopy doskey dosshell |
| 158 | syn keyword btmCommand drawbox drawhline drawvline |
| 159 | "syn keyword btmCommand echo echoerr echos echoserr |
| 160 | syn keyword btmCommand edit edlin emm386 endlocal |
| 161 | syn keyword btmCommand endswitch erase eset except |
| 162 | syn keyword btmCommand exe2bin exit expand fastopen |
| 163 | syn keyword btmCommand fc fdisk ffind find format |
| 164 | syn keyword btmCommand free global gosub goto |
| 165 | syn keyword btmCommand graftabl graphics help history |
| 166 | syn keyword btmCommand inkey input join keyb keybd |
| 167 | syn keyword btmCommand keystack label lh list loadbtm |
| 168 | syn keyword btmCommand loadhigh lock log md mem |
| 169 | syn keyword btmCommand memory mirror mkdir mode more |
| 170 | syn keyword btmCommand move nlsfunc on option path |
| 171 | syn keyword btmCommand pause popd print prompt pushd |
| 172 | syn keyword btmCommand quit rd reboot recover ren |
| 173 | syn keyword btmCommand rename replace restore return |
| 174 | syn keyword btmCommand rmdir scandisk screen scrput |
| 175 | syn keyword btmCommand select set setdos setlocal |
| 176 | syn keyword btmCommand setver share shift sort subst |
| 177 | syn keyword btmCommand swapping switch sys tee text |
| 178 | syn keyword btmCommand time timer touch tree truename |
| 179 | syn keyword btmCommand type unalias undelete unformat |
| 180 | syn keyword btmCommand unlock unset ver verify vol |
| 181 | syn keyword btmCommand vscrput y |
| 182 | |
| 183 | " Define the default highlighting. |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 184 | " Only when an item doesn't have highlighting yet |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 185 | |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 186 | hi def link btmLabel Special |
| 187 | hi def link btmLabelMark Special |
| 188 | hi def link btmCmdDivider Special |
| 189 | hi def link btmConditional btmStatement |
| 190 | hi def link btmDotBoolOp btmStatement |
| 191 | hi def link btmRepeat btmStatement |
| 192 | hi def link btmEchoCommand btmStatement |
| 193 | hi def link btmEchoParam btmStatement |
| 194 | hi def link btmStatement Statement |
| 195 | hi def link btmTodo Todo |
| 196 | hi def link btmString String |
| 197 | hi def link btmNumber Number |
| 198 | hi def link btmComment Comment |
| 199 | hi def link btmArgument Identifier |
| 200 | hi def link btmVariable Identifier |
| 201 | hi def link btmEcho String |
| 202 | hi def link btmBIFMatch btmStatement |
| 203 | hi def link btmBuiltInFunc btmStatement |
| 204 | hi def link btmBuiltInVar btmStatement |
| 205 | hi def link btmSpecialVar btmStatement |
| 206 | hi def link btmCommand btmStatement |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 207 | |
Bram Moolenaar | 89bcfda | 2016-08-30 23:26:57 +0200 | [diff] [blame] | 208 | "optional highlighting |
Bram Moolenaar | f37506f | 2016-08-31 22:22:10 +0200 | [diff] [blame] | 209 | "hi def link btmShowTab Error |
| 210 | "hi def link btmShowTabc Error |
| 211 | "hi def link btmIdentifier Identifier |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 212 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 213 | |
| 214 | let b:current_syntax = "btm" |
| 215 | |
| 216 | " vim: ts=8 |