blob: 30ebcce43a7e1309729863a1cce915393df3d298 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: DCL (Digital Command Language - vms)
Bram Moolenaare2719092015-01-10 15:09:25 +01003" Maintainer: Charles E. Campbell <NdrOchipS@PcampbellAfamily.Mbiz>
Bram Moolenaar13d5aee2016-01-21 23:36:05 +01004" Last Change: Jan 20, 2016
5" Version: 8
Bram Moolenaare2719092015-01-10 15:09:25 +01006" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_DCL
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
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
Bram Moolenaar13d5aee2016-01-21 23:36:05 +010016if !has("patch-7.4.1141")
Bram Moolenaar071d4272004-06-13 20:20:40 +000017 setlocal iskeyword=$,@,48-57,_
Bram Moolenaar13d5aee2016-01-21 23:36:05 +010018else
19 syn iskeyword $,@,48-57,_
Bram Moolenaar071d4272004-06-13 20:20:40 +000020endif
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
Bram Moolenaar9964e462007-05-05 17:54:07 +000078syn region dclString start='"' skip='""' end='"' contains=@Spell
Bram Moolenaar071d4272004-06-13 20:20:40 +000079
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
Bram Moolenaar18144c82006-04-12 21:52:12 +000086syn keyword dclTodo contained COMBAK DEBUG FIXME TODO XXX
Bram Moolenaar071d4272004-06-13 20:20:40 +000087
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