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