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