blob: 2dca8787c322131fec72a5f1e59611803df506ef [file] [log] [blame]
Bram Moolenaar0dc065e2005-07-04 22:49:24 +00001" Vim syntax file
2" Language: udev(8) rules file
Bram Moolenaar57657d82006-04-21 22:12:41 +00003" Maintainer: Nikolai Weibull <now@bitwi.se>
4" Latest Revision: 2006-04-19
Bram Moolenaar0dc065e2005-07-04 22:49:24 +00005
6if exists("b:current_syntax")
7 finish
8endif
9
10let s:cpo_save = &cpo
11set cpo&vim
12
13syn keyword udevrulesTodo contained TODO FIXME XXX NOTE
14
15syn region udevrulesComment display oneline start='^\s*#' end='$'
16 \ contains=udevrulesTodo,@Spell
17
18syn keyword udevrulesRuleKey BUS KERNEL SUBSYSTEM DRIVER ID RESULT
19 \ nextgroup=udevrulesRuleEq
20
21syn keyword udevrulesRuleKey SYSFS nextgroup=udevrulesSysFSPath
22
23syn region udevrulesSysFSPath display transparent
24 \ matchgroup=udevrulesDelimiter start='{'
25 \ matchgroup=udevrulesDelimiter end='}'
26 \ contains=udevrulesPath
27 \ nextgroup=udevrulesRuleEq
28
29syn keyword udevrulesRuleKey ENV nextgroup=udevrulesEnvVar
30
31syn region udevrulesEnvVar display transparent
32 \ matchgroup=udevrulesDelimiter start='{'
33 \ matchgroup=udevrulesDelimiter end='}'
34 \ contains=udevrulesVariable
35 \ nextgroup=udevrulesRuleEq
36
37syn keyword udevrulesRuleKey PROGRAM
38 \ nextgroup=udevrulesEStringEq
39
40syn keyword udevrulesAssignKey NAME SYMLINK OWNER GROUP
41 \ nextgroup=udevrulesEStringEq
42
43syn keyword udevrulesAssignKey MODE
44 \ nextgroup=udevrulesRuleEq
45
46syn keyword udevrulesAssignKey OPTIONS
47 \ nextgroup=udevrulesOptionsEq
48
49syn match udevrulesPath contained display '[^}]\+'
50
51syn match udevrulesVariable contained display '[^}]\+'
52
53syn match udevrulesRuleEq contained '[[:space:]=]'
54 \ nextgroup=udevrulesString skipwhite
55
56syn match udevrulesEStringEq contained '[[:space:]=]'
57 \ nextgroup=udevrulesEString skipwhite
58
59syn match udevrulesOptionsEq contained '[[:space:]=]'
60 \ nextgroup=udevrulesOptions skipwhite
61
62syn region udevrulesEString contained display oneline start=+"+ end=+"+
63 \ contains=udevrulesStrEscapes
64
65syn match udevrulesStrEscapes contained '%[nkpMmbcNPe%]'
66
67syn region udevrulesStrEscapes contained start='%c{' end='}'
68 \ contains=udevrulesStrNumber
69
70syn region udevrulesStrEscapes contained start='%s{' end='}'
71 \ contains=udevrulesPath
72
73syn match udevrulesStrNumber contained '\d\++\='
74
75syn region udevrulesString contained display oneline start=+"+ end=+"+
76 \ contains=udevrulesPattern
77
78syn match udevrulesPattern contained '[*?]'
79syn region udevrulesPattern contained start='\[!\=' end='\]'
80 \ contains=udevrulesPatRange
81
82syn match udevrulesPatRange contained '[^[-]-[^]-]'
83
84syn region udevrulesOptions contained display oneline start=+"+ end=+"+
85 \ contains=udevrulesOption,udevrulesOptionSep
86
87syn keyword udevrulesOption contained last_rule ignore_device ignore_remove
88 \ all_partitions
89
90syn match udevrulesOptionSep contained ','
91
92hi def link udevrulesTodo Todo
93hi def link udevrulesComment Comment
94hi def link udevrulesRuleKey Keyword
95hi def link udevrulesDelimiter Delimiter
96hi def link udevrulesAssignKey Identifier
97hi def link udevrulesPath Identifier
98hi def link udevrulesVariable Identifier
99" XXX: setting this to Operator makes for extremely intense highlighting.
100hi def link udevrulesEq Normal
101hi def link udevrulesRuleEq udevrulesEq
102hi def link udevrulesEStringEq udevrulesEq
103hi def link udevrulesOptionsEq udevrulesEq
104hi def link udevrulesEString udevrulesString
105hi def link udevrulesStrEscapes SpecialChar
106hi def link udevrulesStrNumber Number
107hi def link udevrulesString String
108hi def link udevrulesPattern SpecialChar
109hi def link udevrulesPatRange SpecialChar
110hi def link udevrulesOptions udevrulesString
111hi def link udevrulesOption Type
112hi def link udevrulesOptionSep Delimiter
113
114let b:current_syntax = "udevrules"
115
116let &cpo = s:cpo_save
117unlet s:cpo_save