1" Vim syntax file
2" Language:         eterm(1) configuration file
3" Maintainer:       Nikolai Weibull <now@bitwi.se>
4" Latest Revision:  2006-04-21
5
6if exists("b:current_syntax")
7  finish
8endif
9
10let s:cpo_save = &cpo
11set cpo&vim
12
13syn keyword etermTodo             contained TODO FIXME XXX NOTE
14
15syn region  etermComment          display oneline start='^#' end='$'
16                                  \ contains=etermTodo,@Spell
17
18syn match   etermMagic            display '^<Eterm-[0-9.]\+>$'
19
20syn match   etermNumber           contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
21
22syn region  etermString           contained display oneline start=+"+
23                                  \ skip=+\\"+ end=+"+
24
25syn keyword etermBoolean          contained on off true false yes no
26
27syn keyword etermPreProc          contained appname exec get put random version
28                                  \ include preproc
29
30syn keyword etermFunctions        contained copy exit kill nop paste save
31                                  \ scroll search spawn
32
33syn cluster etermGeneral          contains=etermComment,etermFunction,
34                                  \ etermPreProc
35
36syn keyword etermKeyMod           contained ctrl shift lock mod1 mod2 mod3 mod4
37                                  \ mod5 alt meta anymod
38syn keyword etermKeyMod           contained button1 button2 button3 button4
39                                  \ button5
40
41syn keyword etermColorOptions     contained video nextgroup=etermVideoOptions
42                                  \ skipwhite
43
44syn keyword etermVideoType        contained normal reverse
45
46syn keyword etermColorOptions     contained foreground background cursor
47                                  \ cursor_text pointer
48                                  \ nextgroup=etermColorType skipwhite
49
50syn keyword etermColorType        contained bd ul
51syn match   etermColorType        contained display '\<\%(\d\|1[0-5]\)'
52
53syn keyword etermColorOptions     contained color
54                                  \ nextgroup=etermColorNumber skipwhite
55
56syn keyword etermColorNumber      contained bd ul nextgroup=etermColorSpec
57                                  \ skipwhite
58syn match   etermColorNumber      contained display '\<\%(\d\|1[0-5]\)'
59                                  \ nextgroup=etermColorSpec skipwhite
60
61syn match   etermColorSpec        contained display '\S\+'
62
63syn region  etermColorContext     fold transparent matchgroup=etermContext
64                                  \ start='^\s*begin\s\+color\>'
65                                  \ end='^\s*end\>'
66                                  \ contains=@etermGeneral,etermColorOptions
67
68syn keyword etermAttrOptions      contained geometry nextgroup=etermGeometry
69                                  \ skipwhite
70
71syn match   etermGeometry         contained display '\d\+x\d++\d\++\d\+'
72
73syn keyword etermAttrOptions      contained scrollbar_type
74                                  \ nextgroup=etermScrollbarType skipwhite
75
76syn keyword etermScrollbarType    contained motif xterm next
77
78syn keyword etermAttrOptions      contained font nextgroup=etermFontType
79                                  \ skipwhite
80
81syn keyword etermFontType         contained bold nextgroup=etermFont skipwhite
82syn match   etermFontType         contained display '[0-5]' nextgroup=etermFont
83                                  \ skipwhite
84
85syn match   etermFont             contained display '\S\+'
86
87syn keyword etermFontType         contained default nextgroup=etermNumber
88                                  \ skipwhite
89
90syn keyword etermFontType         contained proportional nextgroup=etermBoolean
91                                  \ skipwhite
92
93syn keyword etermFontType         contained fx nextgroup=etermString skipwhite
94
95syn keyword etermAttrOptions      contained title name iconname
96                                  \ nextgroup=etermString skipwhite
97
98syn keyword etermAttrOptions      contained scrollbar_width desktop
99                                  \ nextgroup=etermNumber skipwhite
100
101syn region  etermAttrContext      fold transparent matchgroup=etermContext
102                                  \ start='^\s*begin\s\+attributes\>'
103                                  \ end='^\s*end\>'
104                                  \ contains=@etermGeneral,etermAttrOptions
105
106syn keyword etermIClassOptions    contained icon path nextgroup=etermString
107                                  \ skipwhite
108syn keyword etermIClassOptions    contained cache nextgroup=etermNumber
109                                  \ skipwhite
110syn keyword etermIClassOptions    contained anim nextgroup=etermNumber
111                                  \ skipwhite
112
113syn region  etermIClassContext    fold transparent matchgroup=etermContext
114                                  \ start='^\s*begin\s\+imageclasses\>'
115                                  \ end='^\s*end\>'
116                                  \ contains=@etermGeneral,etermImageContext,
117                                  \ etermIClassOptions
118
119syn keyword etermImageOptions     contained type nextgroup=etermImageType
120                                  \ skipwhite
121
122syn keyword etermImageTypes       contained background trough anchor up_arrow
123                                  \ left_arrow right_arrow menu menuitem
124                                  \ submenu button buttonbar down_arrow
125
126syn keyword etermImageOptions     contained mode nextgroup=etermImageModes
127                                  \ skipwhite
128
129syn keyword etermImageModes       contained image trans viewport auto solid
130                                  \ nextgroup=etermImageModesAllow skipwhite
131syn keyword etermImageModesAllow  contained allow nextgroup=etermImageModesR
132                                  \ skipwhite
133syn keyword etermImageModesR      contained image trans viewport auto solid
134
135syn keyword etermImageOptions     contained state nextgroup=etermImageState
136                                  \ skipwhite
137
138syn keyword etermImageState       contained normal selected clicked disabled
139
140syn keyword etermImageOptions     contained color nextgroup=etermImageColorFG
141                                  \ skipwhite
142
143syn keyword etermImageColorFG     contained '\S\+' nextgroup=etermImageColorBG
144                                  \ skipwhite
145
146syn keyword etermImageColorBG     contained '\S\+'
147
148syn keyword etermImageOptions     contained file nextgroup=etermString
149                                  \ skipwhite
150
151syn keyword etermImageOptions     contained geom nextgroup=etermImageGeom
152                                  \ skipwhite
153
154syn match   etermImageGeom        contained display
155                                  \ '\s\+\%(\d\+x\d\++\d\++\d\+\)\=:\%(\%(tie\|scale\|hscale\|vscale\|propscale\)d\=\)\='
156
157syn keyword etermImageOptions     contained cmod colormod
158                                  \ nextgroup=etermImageCmod skipwhite
159
160syn keyword etermImageCmod        contained image red green blue
161                                  \ nextgroup=etermImageBrightness skipwhite
162
163syn match   etermImageBrightness  contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
164                                  \ nextgroup=etermImageContrast skipwhite
165
166syn match   etermImageContrast    contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
167                                  \ nextgroup=etermImageGamma skipwhite
168
169syn match   etermImageGamma       contained display '\<\(\d\+\|0x\x\{1,2}\)\>'
170                                  \ nextgroup=etermImageGamma skipwhite
171
172syn region  etermImageOptions     contained display oneline
173                                  \ matchgroup=etermImageOptions
174                                  \ start='border\|bevel\%(\s\+\%(up\|down\)\)\|padding'
175                                  \ end='$' contains=etermNumber
176
177syn region  etermImageContext     contained fold transparent
178                                  \ matchgroup=etermContext
179                                  \ start='^\s*begin\s\+image\>'
180                                  \ end='^\s*end\>'
181                                  \ contains=@etermGeneral,etermImageOptions
182
183syn keyword etermMenuItemOptions  contained action
184                                  \ nextgroup=etermMenuItemAction skipwhite
185
186syn keyword etermMenuItemAction   contained string echo submenu script
187                                  \ nextgroup=etermString skipwhite
188
189syn keyword etermMenuItemAction   contained separator
190
191syn keyword etermMenuItemOptions  contained text rtext nextgroup=etermString
192                                  \ skipwhite
193
194syn region  etermMenuItemContext  contained fold transparent
195                                  \ matchgroup=etermContext
196                                  \ start='^\s*begin\s\+menuitem\>'
197                                  \ end='^\s*end\>'
198                                  \ contains=@etermGeneral,etermMenuItemOptions
199
200syn keyword etermMenuOptions      contained title nextgroup=etermString
201                                  \ skipwhite
202
203syn keyword etermMenuOptions      contained font_name nextgroup=etermFont
204                                  \ skipwhite
205
206syn match   etermMenuOptions      contained display '\<sep\>\|-'
207
208syn region  etermMenuContext      fold transparent matchgroup=etermContext
209                                  \ start='^\s*begin\s\+menu\>'
210                                  \ end='^\s*end\>'
211                                  \ contains=@etermGeneral,etermMenuOptions,
212                                  \ etermMenuItemContext
213
214syn keyword etermBind             contained bind nextgroup=etermBindMods
215                                  \ skipwhite
216
217syn keyword etermBindMods         contained ctrl shift lock mod1 mod2 mod3 mod4
218                                  \ mod5 alt meta anymod
219                                  \ nextgroup=etermBindMods skipwhite
220
221syn keyword etermBindTo           contained to nextgroup=etermBindType
222                                  \ skipwhite
223
224syn keyword etermBindType         contained string echo menu script
225                                  \ nextgroup=etermBindParam skipwhite
226
227syn match   etermBindParam        contained display '\S\+'
228
229syn region  etermActionsContext   fold transparent matchgroup=etermContext
230                                  \ start='^\s*begin\s\+actions\>'
231                                  \ end='^\s*end\>'
232                                  \ contains=@etermGeneral,etermActionsOptions
233
234syn keyword etermButtonOptions    contained font nextgroup=etermFont skipwhite
235syn keyword etermButtonOptions    contained visible nextgroup=etermBoolean
236                                  \ skipwhite
237syn keyword etermButtonOptions    contained dock nextgroup=etermDockOption
238                                  \ skipwhite
239
240syn keyword etermDockOption       contained top bottom no
241
242syn keyword etermButton           contained button nextgroup=etermButtonText
243                                  \ skipwhite
244
245syn region  etermButtonText       contained display oneline start=+"+
246                                  \ skip=+\\"+ end=+"+
247                                  \ nextgroup=etermButtonIcon skipwhite
248
249syn keyword etermButtonIcon       contained icon nextgroup=etermButtonIconFile
250                                  \ skipwhite
251
252syn keyword etermButtonIconFile   contained '\S\+' nextgroup=etermButtonAction
253                                  \ skipwhite
254
255syn keyword etermButtonAction     contained action nextgroup=etermBindType
256                                  \ skipwhite
257
258syn region  etermButtonContext    fold transparent matchgroup=etermContext
259                                  \ start='^\s*begin\s\+button_bar\>'
260                                  \ end='^\s*end\>'
261                                  \ contains=@etermGeneral,etermButtonOptions
262
263syn keyword etermMultiOptions     contained encoding nextgroup=etermEncoding
264                                  \ skipwhite
265
266syn keyword etermEncoding         eucj sjis euckr big5 gb
267syn match   etermEncoding         display 'iso-10646'
268
269syn keyword etermMultiOptions     contained font nextgroup=etermFontType
270                                  \ skipwhite
271
272syn region  etermMultiContext     fold transparent matchgroup=etermContext
273                                  \ start='^\s*begin\s\+multichar\>'
274                                  \ end='^\s*end\>'
275                                  \ contains=@etermGeneral,etermMultiOptions
276
277syn keyword etermXimOptions       contained input_method
278                                  \ nextgroup=etermInputMethod skipwhite
279
280syn match   etermInputMethod      contained display '\S+'
281
282syn keyword etermXimOptions       contained preedit_type
283                                  \ nextgroup=etermPreeditType skipwhite
284
285syn keyword etermPreeditType      contained OverTheSpot OffTheSpot Root
286
287syn region  etermXimContext       fold transparent matchgroup=etermContext
288                                  \ start='^\s*begin\s\+xim\>'
289                                  \ end='^\s*end\>'
290                                  \ contains=@etermGeneral,etermXimOptions
291
292syn keyword etermTogOptions       contained map_alert visual_bell login_shell
293                                  \ scrollbar utmp_logging meta8 iconic
294                                  \ no_input home_on_output home_on_input
295                                  \ scrollbar_floating scrollbar_right
296                                  \ scrollbar_popup borderless double_buffer
297                                  \ no_cursor pause xterm_select select_line
298                                  \ select_trailing_spaces report_as_keysyms
299                                  \ itrans immotile_trans buttonbar
300                                  \ resize_gravity nextgroup=etermBoolean
301                                  \ skipwhite
302
303syn region  etermTogContext       fold transparent matchgroup=etermContext
304                                  \ start='^\s*begin\s\+toggles\>'
305                                  \ end='^\s*end\>'
306                                  \ contains=@etermGeneral,etermTogOptions
307
308syn keyword etermKeyboardOptions  contained smallfont_key bigfont_key keysym
309                                  \ nextgroup=etermKeysym skipwhite
310
311syn keyword etermKeysym           contained '\S\+' nextgroup=etermString
312                                  \ skipwhite
313
314syn keyword etermKeyboardOptions  contained meta_mod alt_mod numlock_mod
315                                  \ nextgroup=etermNumber skipwhite
316
317syn keyword etermKeyboardOptions  contained greek app_keypad app_cursor
318                                  \ nextgroup=etermBoolean skipwhite
319
320syn region  etermKeyboardContext  fold transparent matchgroup=etermContext
321                                  \ start='^\s*begin\s\+keyboard\>'
322                                  \ end='^\s*end\>'
323                                  \ contains=@etermGeneral,etermKeyboardOptions
324
325syn keyword etermMiscOptions      contained print_pipe cut_chars finished_title
326                                  \ finished_text term_name exec
327                                  \ nextgroup=etermString skipwhite
328
329syn keyword etermMiscOptions      contained save_lines min_anchor_size
330                                  \ border_width line_space
331
332syn region  etermMiscContext      fold transparent matchgroup=etermContext
333                                  \ start='^\s*begin\s\+misc\>'
334                                  \ end='^\s*end\>'
335                                  \ contains=@etermGeneral,etermMiscOptions
336
337syn keyword etermEScreenOptions   contained url nextgroup=etermURL skipwhite
338
339syn match   etermURL              contained display
340                                  \ '\<\%(screen\|twin\)://\%([^@:/]\+\%(@[^:/]\+\%(:[^/]\+\)\=\)\=\)\=/\S\+'
341
342syn keyword etermEScreenOptions   contained firewall
343
344syn keyword etermEScreenOptions   contained delay nextgroup=etermNumber
345                                  \ skipwhite
346
347syn keyword etermEScreenOptions   contained bbar_font nextgroup=etermFont
348                                  \ skipwhite
349
350syn keyword etermEScreenOptions   contained bbar_dock nextgroup=etermDockOption
351                                  \ skipwhite
352
353syn region  etermEScreenContext   fold transparent matchgroup=etermContext
354                                  \ start='^\s*begin\s\+escreen\>'
355                                  \ end='^\s*end\>'
356                                  \ contains=@etermGeneral,etermEScreenOptions
357
358if exists("eterm_minlines")
359  let b:eterm_minlines = eterm_minlines
360else
361  let b:eterm_minlines = 50
362endif
363exec "syn sync minlines=" . b:eterm_minlines
364
365hi def link etermTodo             Todo
366hi def link etermComment          Comment
367hi def link etermMagic            PreProc
368hi def link etermNumber           Number
369hi def link etermString           String
370hi def link etermBoolean          Boolean
371hi def link etermPreProc          PreProc
372hi def link etermFunctions        Function
373hi def link etermKeyMod           Constant
374hi def link etermOption           Keyword
375hi def link etermColorOptions     etermOption
376hi def link etermColor            String
377hi def link etermVideoType        Type
378hi def link etermColorType        Type
379hi def link etermColorNumber      Number
380hi def link etermColorSpec        etermColor
381hi def link etermContext          Keyword
382hi def link etermAttrOptions      etermOption
383hi def link etermGeometry         String
384hi def link etermScrollbarType    Type
385hi def link etermFontType         Type
386hi def link etermIClassOptions    etermOption
387hi def link etermImageOptions     etermOption
388hi def link etermImageTypes       Type
389hi def link etermImageModes       Type
390hi def link etermImageModesAllow  Keyword
391hi def link etermImageModesR      Type
392hi def link etermImageState       Keyword
393hi def link etermImageColorFG     etermColor
394hi def link etermImageColorBG     etermColor
395hi def link etermImageGeom        String
396hi def link etermImageCmod        etermOption
397hi def link etermImageBrightness  Number
398hi def link etermImageContrast    Number
399hi def link etermImageGamma       Number
400hi def link etermMenuItemOptions  etermOption
401hi def link etermMenuItemAction   Keyword
402hi def link etermMenuOptions      etermOption
403hi def link etermBind             Keyword
404hi def link etermBindMods         Identifier
405hi def link etermBindTo           Keyword
406hi def link etermBindType         Type
407hi def link etermBindParam        String
408hi def link etermButtonOptions    etermOption
409hi def link etermDockOption       etermOption
410hi def link etermButtonText       String
411hi def link etermButtonIcon       String
412hi def link etermButtonIconFile   String
413hi def link etermButtonAction     Keyword
414hi def link etermMultiOptions     etermOption
415hi def link etermEncoding         Identifier
416hi def link etermXimOptions       etermOption
417hi def link etermInputMethod      Identifier
418hi def link etermPreeditType      Type
419hi def link etermTogOptions       etermOption
420hi def link etermKeyboardOptions  etermOption
421hi def link etermKeysym           Constant
422hi def link etermMiscOptions      etermOption
423hi def link etermEScreenOptions   etermOption
424hi def link etermURL              Identifier
425
426let b:current_syntax = "eterm"
427
428let &cpo = s:cpo_save
429unlet s:cpo_save
430