1" Vim syntax file
2" Put this file to your $HOME/.vim/syntax/ and use :syntax on
3" Language:         Bacula
4" Maintainer:       Eric Bollengier <eric@eb.homelinux.org>
5" URL:
6" Latest Revision:  2007-02-11
7
8
9if version < 600
10  syntax clear
11elseif exists("b:current_syntax")
12  finish
13endif
14
15
16" comments
17syn region      BacComment  display oneline start="#" end="$" keepend contains=BacTodo
18syn region	BacComment2 start="/\*"  end="\*/"
19
20syn region      BacInclude start=/^@/ end="$"
21
22syntax region xCond start=/\w+\s*{/ms=e+1 end=/}/me=s-1
23syntax keyword BacName Name
24syn case ignore
25
26syn keyword  LevelElt  contained Full Incremental Differential
27
28" todo
29syn keyword     BacTodo       contained TODO FIXME XXX NOTE
30syn region 	BacString     start=/"/ skip=/\\"/ end=/"/
31
32" Specifique Client {
33syn region    BacClient display start=/Client {/ end="^}"  contains=BacString,BacComment,BacC1,BacC2,BacC3,BacC4
34syn match     BacC1     contained /File\s*Retention/
35syn match     BacC2     contained /Maximum\s*Concurrent\s*Jobs/
36syn match     BacC3     contained /Job\s*Retention/
37syn keyword   BacC4     contained Name Password Address Catalog AutoPrune FDPort
38
39" FileSet {
40syn region    BacFileSet display start="FileSet {" end="^}" contains=BacString,BacComment,BacName,BacFSInc,BacFSExc,BacFS2
41syn region    BacFSInc   contained display start="Include {" end="}" contains=BacString,BacComment,BacFSOpt,BacFS1
42syn region    BacFSExc   contained display start="Exclude {" end="}" contains=BacString,BacComment,BacFSOpt,BacFS1
43syn region    BacFSOpt   contained display  start="Options {" end="}" contains=BacString,BacComment,BacFSOpt1,BacFSOpt2
44syn keyword   BacFSOpt1  contained verify signature onefs noatime RegexFile Exclude Wild WildDir WildFile CheckChanges aclsupport
45syn match     BacFSOpt2  contained /ignore case/
46syn keyword   BacFS1     contained File
47syn match     BacFS2     contained /Enable VSS/
48
49" Storage {
50syn region   BacSto     display start="Storage {" end="}" contains=BacName,BacComment,BacString,BacSto1,BacSto2
51syn keyword  BacSto1	contained Address SDPort Password Device Autochanger
52syn match    BacSto2    contained /Media\s*Type/
53
54" Director {
55syn region   BacDir     display start="Director {" end="}" contains=BacName,BacComment,BacString,BacDir,BacDir1,BacDir2
56syn keyword  BacDir1    contained DIRport QueryFile WorkingDirectory PidDirectory Password Messages
57syn match    BacDir2    contained /Maximum\s*Concurrent\s*Jobs/
58
59" Catalog {
60syn region   BacCat     display start="Catalog {" end="}" contains=BacName,BacComment,BacString,BacCat1
61syn keyword  BacCat1	contained dbname user password dbport
62
63" Job {
64syn region   BacJob     display start="Job {" end="^}"     contains=BacJ1,BacJ2,BacString,BacComment,Level,BacC2,BacJ3,BacRun
65syn region   BacJobDefs display start="JobDefs {" end="^}" contains=BacJ1,BacJ2,BacString,BacComment,Level,BacC2,BacJ3
66syn region   Level      display start="Level =" end="$"    contains=LevelElt
67
68syn keyword  BacJ1      contained Schedule Name Priority Client Pool JobDefs FileSet SpoolData Storage where
69syn keyword  BacJ2      contained RunBeforeJob RunAfterJob Type Messages ClientRunAfterJob
70syn match    BacJ3      contained /Write Bootstrap/
71
72
73" RunScript {
74syn region   BacRun    contained display start="RunScript {" end="}"  contains=BacR1,BacR2,BacR3,BacR4,BacRW,BacString,BacComment
75syn match    BacR1     contained /Runs\s*When/
76syn match    BacR2     contained /Runs\s*On\s*Client/
77syn match    BacR3     contained /Runs\s*On\s*Failure/
78syn keyword  BacR4     contained Command
79syn keyword  BacRW     contained After Before Always
80
81" Schedule {
82syn region   BacSched     display start="Schedule {" end="^}" contains=BacSR,BacString,BacComment,BacName,BacRun
83syn keyword  BacS1	  contained Pool FullPool on at
84syn keyword  BacS2        contained sun mon tue wed thu fri sat sunday monday tuesday wednesday thursday friday saturday
85syn keyword  BacS3        contained jan  feb  mar  apr  may  jun  jul  aug  sep  oct  nov  dec
86syn keyword  BacS4        contained 1st 2nd  3rd  4th  5th  first second  third  fourth  fifth
87syn region   BacSR        contained display start="Run = " end="$"  contains=BacS1,BacS2,BacS3,BacS4,LevelElt
88
89syn keyword  BacSpecial   false  true yes no
90
91" Pool
92syn region   BacPool      display start="Pool {" end="^}"     contains=BacP1,BacP2,BacP3,BacString,BacComment
93syn match    BacP1        contained /Pool\s*Type/
94syn match    BacP2        contained /Volume\s*Retention/
95syn keyword  BacP3        contained Name AutoPrune Recycle
96
97syn case match
98if version >= 508 || !exists("did_screen_syn_inits")
99  if version < 508
100    let did_screen_syn_inits = 1
101    command -nargs=+ HiLink hi link <args>
102  else
103    command -nargs=+ HiLink hi def link <args>
104  endif
105
106" Define the default highlighting.
107
108HiLink BacFileSet   Function
109HiLink BacFSInc     Function
110HiLink BacFSExc     Function
111HiLink BacFSOpt     Function
112HiLink BacFSOpt1    Keyword
113HiLink BacFSOpt2    Keyword
114HiLink BacFS1       Keyword
115HiLink BacFS2       Keyword
116
117HiLink BacInclude   Include
118HiLink BacComment   Comment
119HiLink BacComment2  Comment
120HiLink BacTodo      Todo
121HiLink LevelElt     String
122HiLink BacRun       Function
123
124HiLink BacCat       Function
125HiLink BacCat1      Keyword
126
127HiLink BacSto       Function
128HiLink BacSto1      Keyword
129HiLink BacSto2      Keyword
130
131HiLink BacDir       Function
132HiLink BacDir1      keyword
133HiLink BacDir2      keyword
134
135HiLink BacJob	    Function
136HiLink BacJobDefs   Function
137HiLink BacJ1        Keyword
138HiLink BacJ2        Keyword
139HiLink BacJ3        Keyword
140
141HiLink BacClient    Function
142HiLink BacC1	    Keyword
143HiLink BacC2	    Keyword
144HiLink BacC3	    Keyword
145HiLink BacC4	    Keyword
146HiLink Level        Keyword
147
148HiLink BacSched     Function
149HiLink BacS1        Keyword
150HiLink BacS2        String
151HiLink BacS3        String
152HiLink BacS4        String
153
154HiLink BacR1        Keyword
155HiLink BacR2        Keyword
156HiLink BacR3        Keyword
157HiLink BacR4        Keyword
158HiLink BacRW        String
159
160HiLink BacPool      Function
161HiLink BacP1        Keyword
162HiLink BacP2        Keyword
163HiLink BacP3        Keyword
164
165HiLink BacName      Keyword
166HiLink BacString    String
167HiLink BacNumber    Number
168HiLink BacCommand   BacCommands
169HiLink BacCommands  Keyword
170HiLink BacSpecial   Boolean
171HiLink BacKey       Function
172HiLink Equal        Comment
173delcommand HiLink
174
175endif
176
177