1" Vim syntax file 2" Language: DCL (Digital Command Language - vms) 3" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz> 4" Last Change: Sep 11, 2006 5" Version: 6 6" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax 7 8" For version 5.x: Clear all syntax items 9" For version 6.x: Quit when a syntax file was already loaded 10if version < 600 11 syntax clear 12elseif exists("b:current_syntax") 13 finish 14endif 15 16if version < 600 17 set iskeyword=$,@,48-57,_ 18else 19 setlocal iskeyword=$,@,48-57,_ 20endif 21 22syn case ignore 23syn keyword dclInstr accounting del[ete] gen[cat] mou[nt] run 24syn keyword dclInstr all[ocate] dep[osit] gen[eral] ncp run[off] 25syn keyword dclInstr ana[lyze] dia[gnose] gos[ub] ncs sca 26syn keyword dclInstr app[end] dif[ferences] got[o] on sea[rch] 27syn keyword dclInstr ass[ign] dir[ectory] hel[p] ope[n] set 28syn keyword dclInstr att[ach] dis[able] ico[nv] pas[cal] sho[w] 29syn keyword dclInstr aut[horize] dis[connect] if pas[sword] sor[t] 30syn keyword dclInstr aut[ogen] dis[mount] ini[tialize] pat[ch] spa[wn] 31syn keyword dclInstr bac[kup] dpm[l] inq[uire] pca sta[rt] 32syn keyword dclInstr cal[l] dqs ins[tall] pho[ne] sto[p] 33syn keyword dclInstr can[cel] dsr job pri[nt] sub[mit] 34syn keyword dclInstr cc dst[graph] lat[cp] pro[duct] sub[routine] 35syn keyword dclInstr clo[se] dtm lib[rary] psw[rap] swx[cr] 36syn keyword dclInstr cms dum[p] lic[ense] pur[ge] syn[chronize] 37syn keyword dclInstr con[nect] edi[t] lin[k] qde[lete] sys[gen] 38syn keyword dclInstr con[tinue] ena[ble] lmc[p] qse[t] sys[man] 39syn keyword dclInstr con[vert] end[subroutine] loc[ale] qsh[ow] tff 40syn keyword dclInstr cop[y] eod log[in] rea[d] then 41syn keyword dclInstr cre[ate] eoj log[out] rec[all] typ[e] 42syn keyword dclInstr cxx exa[mine] lse[dit] rec[over] uil 43syn keyword dclInstr cxx[l_help] exc[hange] mac[ro] ren[ame] unl[ock] 44syn keyword dclInstr dea[llocate] exi[t] mai[l] rep[ly] ves[t] 45syn keyword dclInstr dea[ssign] fdl mer[ge] req[uest] vie[w] 46syn keyword dclInstr deb[ug] flo[wgraph] mes[sage] ret[urn] wai[t] 47syn keyword dclInstr dec[k] fon[t] mms rms wri[te] 48syn keyword dclInstr def[ine] for[tran] 49 50syn keyword dclLexical f$context f$edit f$getjpi f$message f$setprv 51syn keyword dclLexical f$csid f$element f$getqui f$mode f$string 52syn keyword dclLexical f$cvsi f$environment f$getsyi f$parse f$time 53syn keyword dclLexical f$cvtime f$extract f$identifier f$pid f$trnlnm 54syn keyword dclLexical f$cvui f$fao f$integer f$privilege f$type 55syn keyword dclLexical f$device f$file_attributes f$length f$process f$user 56syn keyword dclLexical f$directory f$getdvi f$locate f$search f$verify 57 58syn match dclMdfy "/\I\i*" nextgroup=dclMdfySet,dclMdfySetString 59syn match dclMdfySet "=[^ \t"]*" contained 60syn region dclMdfySet matchgroup=dclMdfyBrkt start="=\[" matchgroup=dclMdfyBrkt end="]" contains=dclMdfySep 61syn region dclMdfySetString start='="' skip='""' end='"' contained 62syn match dclMdfySep "[:,]" contained 63 64" Numbers 65syn match dclNumber "\d\+" 66 67" Varname (mainly to prevent dclNumbers from being recognized when part of a dclVarname) 68syn match dclVarname "\I\i*" 69 70" Filenames (devices, paths) 71syn match dclDevice "\I\i*\(\$\I\i*\)\=:[^=]"me=e-1 nextgroup=dclDirPath,dclFilename 72syn match dclDirPath "\[\(\I\i*\.\)*\I\i*\]" contains=dclDirSep nextgroup=dclFilename 73syn match dclFilename "\I\i*\$\(\I\i*\)\=\.\(\I\i*\)*\(;\d\+\)\=" contains=dclDirSep 74syn match dclFilename "\I\i*\.\(\I\i*\)\=\(;\d\+\)\=" contains=dclDirSep contained 75syn match dclDirSep "[[\].;]" 76 77" Strings 78syn region dclString start='"' skip='""' end='"' contains=@Spell 79 80" $ stuff and comments 81syn cluster dclCommentGroup contains=dclStart,dclTodo,@Spell 82syn match dclStart "^\$" skipwhite nextgroup=dclExe 83syn match dclContinue "-$" 84syn match dclComment "^\$!.*$" contains=@dclCommentGroup 85syn match dclExe "\I\i*" contained 86syn keyword dclTodo contained COMBAK DEBUG FIXME TODO XXX 87 88" Assignments and Operators 89syn match dclAssign ":==\=" 90syn match dclAssign "=" 91syn match dclOper "--\|+\|\*\|/" 92syn match dclLogOper "\.[a-zA-Z][a-zA-Z][a-zA-Z]\=\." contains=dclLogical,dclLogSep 93syn keyword dclLogical contained and ge gts lt nes 94syn keyword dclLogical contained eq ges le lts not 95syn keyword dclLogical contained eqs gt les ne or 96syn match dclLogSep "\." contained 97 98" @command procedures 99syn match dclCmdProcStart "@" nextgroup=dclCmdProc 100syn match dclCmdProc "\I\i*\(\.\I\i*\)\=" contained 101syn match dclCmdProc "\I\i*:" contained nextgroup=dclCmdDirPath,dclCmdProc 102syn match dclCmdDirPath "\[\(\I\i*\.\)*\I\i*\]" contained nextgroup=delCmdProc 103 104" labels 105syn match dclGotoLabel "^\$\s*\I\i*:\s*$" contains=dclStart 106 107" parameters 108syn match dclParam "'\I[a-zA-Z0-9_$]*'\=" 109 110" () matching (the clusters are commented out until a vim/vms comes out for v5.2+) 111"syn cluster dclNextGroups contains=dclCmdDirPath,dclCmdProc,dclCmdProc,dclDirPath,dclFilename,dclFilename,dclMdfySet,dclMdfySetString,delCmdProc,dclExe,dclTodo 112"syn region dclFuncList matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,@dclNextGroups 113syn region dclFuncList matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,dclCmdDirPath,dclCmdProc,dclCmdProc,dclDirPath,dclFilename,dclFilename,dclMdfySet,dclMdfySetString,delCmdProc,dclExe,dclTodo 114syn match dclError ")" 115 116" Define the default highlighting. 117" For version 5.7 and earlier: only when not done already 118" For version 5.8 and later: only when an item doesn't have highlighting yet 119if version >= 508 || !exists("did_dcl_syntax_inits") 120 if version < 508 121 let did_dcl_syntax_inits = 1 122 command -nargs=+ HiLink hi link <args> 123 else 124 command -nargs=+ HiLink hi def link <args> 125 endif 126 127 HiLink dclLogOper dclError 128 HiLink dclLogical dclOper 129 HiLink dclLogSep dclSep 130 131 HiLink dclAssign Operator 132 HiLink dclCmdProc Special 133 HiLink dclCmdProcStart Operator 134 HiLink dclComment Comment 135 HiLink dclContinue Statement 136 HiLink dclDevice Identifier 137 HiLink dclDirPath Identifier 138 HiLink dclDirPath Identifier 139 HiLink dclDirSep Delimiter 140 HiLink dclError Error 141 HiLink dclExe Statement 142 HiLink dclFilename NONE 143 HiLink dclGotoLabel Label 144 HiLink dclInstr Statement 145 HiLink dclLexical Function 146 HiLink dclMdfy Type 147 HiLink dclMdfyBrkt Delimiter 148 HiLink dclMdfySep Delimiter 149 HiLink dclMdfySet Type 150 HiLink dclMdfySetString String 151 HiLink dclNumber Number 152 HiLink dclOper Operator 153 HiLink dclParam Special 154 HiLink dclSep Delimiter 155 HiLink dclStart Delimiter 156 HiLink dclString String 157 HiLink dclTodo Todo 158 159 delcommand HiLink 160endif 161 162let b:current_syntax = "dcl" 163 164" vim: ts=16 165