1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: DCL (Digital Command Language - vms) 3*1d9215b9SBram Moolenaar" Maintainer: Charles E. Campbell <[email protected]> 4723dd946SBram Moolenaar" Last Change: Mar 26, 2019 5*1d9215b9SBram Moolenaar" Version: 13 6e2719096SBram Moolenaar" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_DCL 7071d4279SBram Moolenaar 889bcfda6SBram Moolenaar" quit when a syntax file was already loaded 989bcfda6SBram Moolenaarif exists("b:current_syntax") 10071d4279SBram Moolenaar finish 11071d4279SBram Moolenaarendif 12071d4279SBram Moolenaar 13723dd946SBram Moolenaarif (v:version == 704 && has("patch-7.4.1142")) || v:version > 704 1413d5aeefSBram Moolenaar syn iskeyword $,@,48-57,_ 15723dd946SBram Moolenaarelse 16723dd946SBram Moolenaar setlocal iskeyword=$,@,48-57,_ 17071d4279SBram Moolenaarendif 18071d4279SBram Moolenaar 19071d4279SBram Moolenaarsyn case ignore 20071d4279SBram Moolenaarsyn keyword dclInstr accounting del[ete] gen[cat] mou[nt] run 21071d4279SBram Moolenaarsyn keyword dclInstr all[ocate] dep[osit] gen[eral] ncp run[off] 22071d4279SBram Moolenaarsyn keyword dclInstr ana[lyze] dia[gnose] gos[ub] ncs sca 23071d4279SBram Moolenaarsyn keyword dclInstr app[end] dif[ferences] got[o] on sea[rch] 24071d4279SBram Moolenaarsyn keyword dclInstr ass[ign] dir[ectory] hel[p] ope[n] set 25071d4279SBram Moolenaarsyn keyword dclInstr att[ach] dis[able] ico[nv] pas[cal] sho[w] 26071d4279SBram Moolenaarsyn keyword dclInstr aut[horize] dis[connect] if pas[sword] sor[t] 27071d4279SBram Moolenaarsyn keyword dclInstr aut[ogen] dis[mount] ini[tialize] pat[ch] spa[wn] 28071d4279SBram Moolenaarsyn keyword dclInstr bac[kup] dpm[l] inq[uire] pca sta[rt] 29071d4279SBram Moolenaarsyn keyword dclInstr cal[l] dqs ins[tall] pho[ne] sto[p] 30071d4279SBram Moolenaarsyn keyword dclInstr can[cel] dsr job pri[nt] sub[mit] 31071d4279SBram Moolenaarsyn keyword dclInstr cc dst[graph] lat[cp] pro[duct] sub[routine] 32071d4279SBram Moolenaarsyn keyword dclInstr clo[se] dtm lib[rary] psw[rap] swx[cr] 33071d4279SBram Moolenaarsyn keyword dclInstr cms dum[p] lic[ense] pur[ge] syn[chronize] 34071d4279SBram Moolenaarsyn keyword dclInstr con[nect] edi[t] lin[k] qde[lete] sys[gen] 35071d4279SBram Moolenaarsyn keyword dclInstr con[tinue] ena[ble] lmc[p] qse[t] sys[man] 36071d4279SBram Moolenaarsyn keyword dclInstr con[vert] end[subroutine] loc[ale] qsh[ow] tff 37071d4279SBram Moolenaarsyn keyword dclInstr cop[y] eod log[in] rea[d] then 38071d4279SBram Moolenaarsyn keyword dclInstr cre[ate] eoj log[out] rec[all] typ[e] 39071d4279SBram Moolenaarsyn keyword dclInstr cxx exa[mine] lse[dit] rec[over] uil 40071d4279SBram Moolenaarsyn keyword dclInstr cxx[l_help] exc[hange] mac[ro] ren[ame] unl[ock] 41071d4279SBram Moolenaarsyn keyword dclInstr dea[llocate] exi[t] mai[l] rep[ly] ves[t] 42071d4279SBram Moolenaarsyn keyword dclInstr dea[ssign] fdl mer[ge] req[uest] vie[w] 43071d4279SBram Moolenaarsyn keyword dclInstr deb[ug] flo[wgraph] mes[sage] ret[urn] wai[t] 44071d4279SBram Moolenaarsyn keyword dclInstr dec[k] fon[t] mms rms wri[te] 45071d4279SBram Moolenaarsyn keyword dclInstr def[ine] for[tran] 46071d4279SBram Moolenaar 47071d4279SBram Moolenaarsyn keyword dclLexical f$context f$edit f$getjpi f$message f$setprv 48071d4279SBram Moolenaarsyn keyword dclLexical f$csid f$element f$getqui f$mode f$string 49071d4279SBram Moolenaarsyn keyword dclLexical f$cvsi f$environment f$getsyi f$parse f$time 50071d4279SBram Moolenaarsyn keyword dclLexical f$cvtime f$extract f$identifier f$pid f$trnlnm 51071d4279SBram Moolenaarsyn keyword dclLexical f$cvui f$fao f$integer f$privilege f$type 52071d4279SBram Moolenaarsyn keyword dclLexical f$device f$file_attributes f$length f$process f$user 53071d4279SBram Moolenaarsyn keyword dclLexical f$directory f$getdvi f$locate f$search f$verify 54071d4279SBram Moolenaar 55071d4279SBram Moolenaarsyn match dclMdfy "/\I\i*" nextgroup=dclMdfySet,dclMdfySetString 56071d4279SBram Moolenaarsyn match dclMdfySet "=[^ \t"]*" contained 57071d4279SBram Moolenaarsyn region dclMdfySet matchgroup=dclMdfyBrkt start="=\[" matchgroup=dclMdfyBrkt end="]" contains=dclMdfySep 58071d4279SBram Moolenaarsyn region dclMdfySetString start='="' skip='""' end='"' contained 59071d4279SBram Moolenaarsyn match dclMdfySep "[:,]" contained 60071d4279SBram Moolenaar 61071d4279SBram Moolenaar" Numbers 62071d4279SBram Moolenaarsyn match dclNumber "\d\+" 63071d4279SBram Moolenaar 64071d4279SBram Moolenaar" Varname (mainly to prevent dclNumbers from being recognized when part of a dclVarname) 65071d4279SBram Moolenaarsyn match dclVarname "\I\i*" 66071d4279SBram Moolenaar 67071d4279SBram Moolenaar" Filenames (devices, paths) 68071d4279SBram Moolenaarsyn match dclDevice "\I\i*\(\$\I\i*\)\=:[^=]"me=e-1 nextgroup=dclDirPath,dclFilename 69071d4279SBram Moolenaarsyn match dclDirPath "\[\(\I\i*\.\)*\I\i*\]" contains=dclDirSep nextgroup=dclFilename 70071d4279SBram Moolenaarsyn match dclFilename "\I\i*\$\(\I\i*\)\=\.\(\I\i*\)*\(;\d\+\)\=" contains=dclDirSep 71071d4279SBram Moolenaarsyn match dclFilename "\I\i*\.\(\I\i*\)\=\(;\d\+\)\=" contains=dclDirSep contained 72071d4279SBram Moolenaarsyn match dclDirSep "[[\].;]" 73071d4279SBram Moolenaar 74071d4279SBram Moolenaar" Strings 759964e468SBram Moolenaarsyn region dclString start='"' skip='""' end='"' contains=@Spell 76071d4279SBram Moolenaar 77071d4279SBram Moolenaar" $ stuff and comments 78071d4279SBram Moolenaarsyn cluster dclCommentGroup contains=dclStart,dclTodo,@Spell 79071d4279SBram Moolenaarsyn match dclStart "^\$" skipwhite nextgroup=dclExe 80071d4279SBram Moolenaarsyn match dclContinue "-$" 81071d4279SBram Moolenaarsyn match dclComment "^\$!.*$" contains=@dclCommentGroup 82071d4279SBram Moolenaarsyn match dclExe "\I\i*" contained 8318144c84SBram Moolenaarsyn keyword dclTodo contained COMBAK DEBUG FIXME TODO XXX 84071d4279SBram Moolenaar 85071d4279SBram Moolenaar" Assignments and Operators 86071d4279SBram Moolenaarsyn match dclAssign ":==\=" 87071d4279SBram Moolenaarsyn match dclAssign "=" 88071d4279SBram Moolenaarsyn match dclOper "--\|+\|\*\|/" 89071d4279SBram Moolenaarsyn match dclLogOper "\.[a-zA-Z][a-zA-Z][a-zA-Z]\=\." contains=dclLogical,dclLogSep 90071d4279SBram Moolenaarsyn keyword dclLogical contained and ge gts lt nes 91071d4279SBram Moolenaarsyn keyword dclLogical contained eq ges le lts not 92071d4279SBram Moolenaarsyn keyword dclLogical contained eqs gt les ne or 93071d4279SBram Moolenaarsyn match dclLogSep "\." contained 94071d4279SBram Moolenaar 95071d4279SBram Moolenaar" @command procedures 96071d4279SBram Moolenaarsyn match dclCmdProcStart "@" nextgroup=dclCmdProc 97071d4279SBram Moolenaarsyn match dclCmdProc "\I\i*\(\.\I\i*\)\=" contained 98071d4279SBram Moolenaarsyn match dclCmdProc "\I\i*:" contained nextgroup=dclCmdDirPath,dclCmdProc 99071d4279SBram Moolenaarsyn match dclCmdDirPath "\[\(\I\i*\.\)*\I\i*\]" contained nextgroup=delCmdProc 100071d4279SBram Moolenaar 101071d4279SBram Moolenaar" labels 102071d4279SBram Moolenaarsyn match dclGotoLabel "^\$\s*\I\i*:\s*$" contains=dclStart 103071d4279SBram Moolenaar 104071d4279SBram Moolenaar" parameters 105071d4279SBram Moolenaarsyn match dclParam "'\I[a-zA-Z0-9_$]*'\=" 106071d4279SBram Moolenaar 107071d4279SBram Moolenaar" () matching (the clusters are commented out until a vim/vms comes out for v5.2+) 108071d4279SBram Moolenaar"syn cluster dclNextGroups contains=dclCmdDirPath,dclCmdProc,dclCmdProc,dclDirPath,dclFilename,dclFilename,dclMdfySet,dclMdfySetString,delCmdProc,dclExe,dclTodo 109071d4279SBram Moolenaar"syn region dclFuncList matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,@dclNextGroups 110071d4279SBram Moolenaarsyn region dclFuncList matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,dclCmdDirPath,dclCmdProc,dclCmdProc,dclDirPath,dclFilename,dclFilename,dclMdfySet,dclMdfySetString,delCmdProc,dclExe,dclTodo 111071d4279SBram Moolenaarsyn match dclError ")" 112071d4279SBram Moolenaar 113071d4279SBram Moolenaar" Define the default highlighting. 114f37506f6SBram Moolenaarif !exists("skip_dcl_syntax_inits") 115071d4279SBram Moolenaar 116f37506f6SBram Moolenaar hi def link dclLogOper dclError 117f37506f6SBram Moolenaar hi def link dclLogical dclOper 118f37506f6SBram Moolenaar hi def link dclLogSep dclSep 119071d4279SBram Moolenaar 120f37506f6SBram Moolenaar hi def link dclAssign Operator 121f37506f6SBram Moolenaar hi def link dclCmdProc Special 122f37506f6SBram Moolenaar hi def link dclCmdProcStart Operator 123f37506f6SBram Moolenaar hi def link dclComment Comment 124f37506f6SBram Moolenaar hi def link dclContinue Statement 125f37506f6SBram Moolenaar hi def link dclDevice Identifier 126f37506f6SBram Moolenaar hi def link dclDirPath Identifier 127f37506f6SBram Moolenaar hi def link dclDirPath Identifier 128f37506f6SBram Moolenaar hi def link dclDirSep Delimiter 129f37506f6SBram Moolenaar hi def link dclError Error 130f37506f6SBram Moolenaar hi def link dclExe Statement 131f37506f6SBram Moolenaar hi def link dclFilename NONE 132f37506f6SBram Moolenaar hi def link dclGotoLabel Label 133f37506f6SBram Moolenaar hi def link dclInstr Statement 134f37506f6SBram Moolenaar hi def link dclLexical Function 135f37506f6SBram Moolenaar hi def link dclMdfy Type 136f37506f6SBram Moolenaar hi def link dclMdfyBrkt Delimiter 137f37506f6SBram Moolenaar hi def link dclMdfySep Delimiter 138f37506f6SBram Moolenaar hi def link dclMdfySet Type 139f37506f6SBram Moolenaar hi def link dclMdfySetString String 140f37506f6SBram Moolenaar hi def link dclNumber Number 141f37506f6SBram Moolenaar hi def link dclOper Operator 142f37506f6SBram Moolenaar hi def link dclParam Special 143f37506f6SBram Moolenaar hi def link dclSep Delimiter 144f37506f6SBram Moolenaar hi def link dclStart Delimiter 145f37506f6SBram Moolenaar hi def link dclString String 146f37506f6SBram Moolenaar hi def link dclTodo Todo 147071d4279SBram Moolenaar 148f37506f6SBram Moolenaarendif 149071d4279SBram Moolenaar 150071d4279SBram Moolenaarlet b:current_syntax = "dcl" 151071d4279SBram Moolenaar 152071d4279SBram Moolenaar" vim: ts=16 153