Merge branch 'hack/autopaste'
[vim-kana.git] / runtime / syntax / dcl.vim
blobb051b08cf17427f5d226a70da06dd1b629e8a465
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
8 " For version 5.x: Clear all syntax items
9 " For version 6.x: Quit when a syntax file was already loaded
10 if version < 600
11   syntax clear
12 elseif exists("b:current_syntax")
13   finish
14 endif
16 if version < 600
17   set iskeyword=$,@,48-57,_
18 else
19   setlocal iskeyword=$,@,48-57,_
20 endif
22 syn case ignore
23 syn keyword dclInstr    accounting      del[ete]        gen[cat]        mou[nt] run
24 syn keyword dclInstr    all[ocate]      dep[osit]       gen[eral]       ncp     run[off]
25 syn keyword dclInstr    ana[lyze]       dia[gnose]      gos[ub] ncs     sca
26 syn keyword dclInstr    app[end]        dif[ferences]   got[o]  on      sea[rch]
27 syn keyword dclInstr    ass[ign]        dir[ectory]     hel[p]  ope[n]  set
28 syn keyword dclInstr    att[ach]        dis[able]       ico[nv] pas[cal]        sho[w]
29 syn keyword dclInstr    aut[horize]     dis[connect]    if      pas[sword]      sor[t]
30 syn keyword dclInstr    aut[ogen]       dis[mount]      ini[tialize]    pat[ch] spa[wn]
31 syn keyword dclInstr    bac[kup]        dpm[l]  inq[uire]       pca     sta[rt]
32 syn keyword dclInstr    cal[l]  dqs     ins[tall]       pho[ne] sto[p]
33 syn keyword dclInstr    can[cel]        dsr     job     pri[nt] sub[mit]
34 syn keyword dclInstr    cc      dst[graph]      lat[cp] pro[duct]       sub[routine]
35 syn keyword dclInstr    clo[se] dtm     lib[rary]       psw[rap]        swx[cr]
36 syn keyword dclInstr    cms     dum[p]  lic[ense]       pur[ge] syn[chronize]
37 syn keyword dclInstr    con[nect]       edi[t]  lin[k]  qde[lete]       sys[gen]
38 syn keyword dclInstr    con[tinue]      ena[ble]        lmc[p]  qse[t]  sys[man]
39 syn keyword dclInstr    con[vert]       end[subroutine] loc[ale]        qsh[ow] tff
40 syn keyword dclInstr    cop[y]  eod     log[in] rea[d]  then
41 syn keyword dclInstr    cre[ate]        eoj     log[out]        rec[all]        typ[e]
42 syn keyword dclInstr    cxx     exa[mine]       lse[dit]        rec[over]       uil
43 syn keyword dclInstr    cxx[l_help]     exc[hange]      mac[ro] ren[ame]        unl[ock]
44 syn keyword dclInstr    dea[llocate]    exi[t]  mai[l]  rep[ly] ves[t]
45 syn keyword dclInstr    dea[ssign]      fdl     mer[ge] req[uest]       vie[w]
46 syn keyword dclInstr    deb[ug] flo[wgraph]     mes[sage]       ret[urn]        wai[t]
47 syn keyword dclInstr    dec[k]  fon[t]  mms     rms     wri[te]
48 syn keyword dclInstr    def[ine]        for[tran]
50 syn keyword dclLexical  f$context       f$edit    f$getjpi      f$message       f$setprv
51 syn keyword dclLexical  f$csid  f$element         f$getqui      f$mode  f$string
52 syn keyword dclLexical  f$cvsi  f$environment     f$getsyi      f$parse f$time
53 syn keyword dclLexical  f$cvtime        f$extract         f$identifier  f$pid   f$trnlnm
54 syn keyword dclLexical  f$cvui  f$fao     f$integer     f$privilege     f$type
55 syn keyword dclLexical  f$device        f$file_attributes f$length      f$process       f$user
56 syn keyword dclLexical  f$directory     f$getdvi          f$locate      f$search        f$verify
58 syn match   dclMdfy     "/\I\i*"        nextgroup=dclMdfySet,dclMdfySetString
59 syn match   dclMdfySet  "=[^ \t"]*"     contained
60 syn region  dclMdfySet  matchgroup=dclMdfyBrkt start="=\[" matchgroup=dclMdfyBrkt end="]"       contains=dclMdfySep
61 syn region  dclMdfySetString    start='="'      skip='""'       end='"' contained
62 syn match   dclMdfySep  "[:,]"  contained
64 " Numbers
65 syn match   dclNumber   "\d\+"
67 " Varname (mainly to prevent dclNumbers from being recognized when part of a dclVarname)
68 syn match   dclVarname  "\I\i*"
70 " Filenames (devices, paths)
71 syn match   dclDevice   "\I\i*\(\$\I\i*\)\=:[^=]"me=e-1         nextgroup=dclDirPath,dclFilename
72 syn match   dclDirPath  "\[\(\I\i*\.\)*\I\i*\]"         contains=dclDirSep      nextgroup=dclFilename
73 syn match   dclFilename "\I\i*\$\(\I\i*\)\=\.\(\I\i*\)*\(;\d\+\)\="     contains=dclDirSep
74 syn match   dclFilename "\I\i*\.\(\I\i*\)\=\(;\d\+\)\=" contains=dclDirSep      contained
75 syn match   dclDirSep   "[[\].;]"
77 " Strings
78 syn region  dclString   start='"'       skip='""'       end='"' contains=@Spell
80 " $ stuff and comments
81 syn cluster dclCommentGroup     contains=dclStart,dclTodo,@Spell
82 syn match   dclStart    "^\$"   skipwhite nextgroup=dclExe
83 syn match   dclContinue "-$"
84 syn match   dclComment  "^\$!.*$"       contains=@dclCommentGroup
85 syn match   dclExe      "\I\i*" contained
86 syn keyword dclTodo contained   COMBAK  DEBUG   FIXME   TODO    XXX
88 " Assignments and Operators
89 syn match   dclAssign   ":==\="
90 syn match   dclAssign   "="
91 syn match   dclOper     "--\|+\|\*\|/"
92 syn match   dclLogOper  "\.[a-zA-Z][a-zA-Z][a-zA-Z]\=\." contains=dclLogical,dclLogSep
93 syn keyword dclLogical contained        and     ge      gts     lt      nes
94 syn keyword dclLogical contained        eq      ges     le      lts     not
95 syn keyword dclLogical contained        eqs     gt      les     ne      or
96 syn match   dclLogSep   "\."            contained
98 " @command procedures
99 syn match   dclCmdProcStart     "@"                     nextgroup=dclCmdProc
100 syn match   dclCmdProc  "\I\i*\(\.\I\i*\)\="    contained
101 syn match   dclCmdProc  "\I\i*:"                contained       nextgroup=dclCmdDirPath,dclCmdProc
102 syn match   dclCmdDirPath       "\[\(\I\i*\.\)*\I\i*\]" contained       nextgroup=delCmdProc
104 " labels
105 syn match   dclGotoLabel        "^\$\s*\I\i*:\s*$"      contains=dclStart
107 " parameters
108 syn match   dclParam    "'\I[a-zA-Z0-9_$]*'\="
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
113 syn region  dclFuncList matchgroup=Delimiter start="(" matchgroup=Delimiter end=")" contains=ALLBUT,dclCmdDirPath,dclCmdProc,dclCmdProc,dclDirPath,dclFilename,dclFilename,dclMdfySet,dclMdfySetString,delCmdProc,dclExe,dclTodo
114 syn match   dclError    ")"
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
119 if 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
127  HiLink dclLogOper      dclError
128  HiLink dclLogical      dclOper
129  HiLink dclLogSep       dclSep
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
159  delcommand HiLink
160 endif
162 let b:current_syntax = "dcl"
164 " vim: ts=16