2 " Language: udev(8) rules file
3 " Maintainer: Nikolai Weibull <now@bitwi.se>
4 " Latest Revision: 2006-04-19
6 if exists("b:current_syntax")
13 syn keyword udevrulesTodo contained TODO FIXME XXX NOTE
15 syn region udevrulesComment display oneline start='^\s*#' end='$'
16 \ contains=udevrulesTodo,@Spell
18 syn keyword udevrulesRuleKey BUS KERNEL SUBSYSTEM DRIVER ID RESULT
19 \ nextgroup=udevrulesRuleEq
21 syn keyword udevrulesRuleKey SYSFS nextgroup=udevrulesSysFSPath
23 syn region udevrulesSysFSPath display transparent
24 \ matchgroup=udevrulesDelimiter start='{'
25 \ matchgroup=udevrulesDelimiter end='}'
26 \ contains=udevrulesPath
27 \ nextgroup=udevrulesRuleEq
29 syn keyword udevrulesRuleKey ENV nextgroup=udevrulesEnvVar
31 syn region udevrulesEnvVar display transparent
32 \ matchgroup=udevrulesDelimiter start='{'
33 \ matchgroup=udevrulesDelimiter end='}'
34 \ contains=udevrulesVariable
35 \ nextgroup=udevrulesRuleEq
37 syn keyword udevrulesRuleKey PROGRAM
38 \ nextgroup=udevrulesEStringEq
40 syn keyword udevrulesAssignKey NAME SYMLINK OWNER GROUP
41 \ nextgroup=udevrulesEStringEq
43 syn keyword udevrulesAssignKey MODE
44 \ nextgroup=udevrulesRuleEq
46 syn keyword udevrulesAssignKey OPTIONS
47 \ nextgroup=udevrulesOptionsEq
49 syn match udevrulesPath contained display '[^}]\+'
51 syn match udevrulesVariable contained display '[^}]\+'
53 syn match udevrulesRuleEq contained '[[:space:]=]'
54 \ nextgroup=udevrulesString skipwhite
56 syn match udevrulesEStringEq contained '[[:space:]=]'
57 \ nextgroup=udevrulesEString skipwhite
59 syn match udevrulesOptionsEq contained '[[:space:]=]'
60 \ nextgroup=udevrulesOptions skipwhite
62 syn region udevrulesEString contained display oneline start=+"+ end=+"+
63 \ contains=udevrulesStrEscapes
65 syn match udevrulesStrEscapes contained '%[nkpMmbcNPe%]'
67 syn region udevrulesStrEscapes contained start='%c{' end='}'
68 \ contains=udevrulesStrNumber
70 syn region udevrulesStrEscapes contained start='%s{' end='}'
71 \ contains=udevrulesPath
73 syn match udevrulesStrNumber contained '\d\++\='
75 syn region udevrulesString contained display oneline start=+"+ end=+"+
76 \ contains=udevrulesPattern
78 syn match udevrulesPattern contained '[*?]'
79 syn region udevrulesPattern contained start='\[!\=' end='\]'
80 \ contains=udevrulesPatRange
82 syn match udevrulesPatRange contained '[^[-]-[^]-]'
84 syn region udevrulesOptions contained display oneline start=+"+ end=+"+
85 \ contains=udevrulesOption,udevrulesOptionSep
87 syn keyword udevrulesOption contained last_rule ignore_device ignore_remove
90 syn match udevrulesOptionSep contained ','
92 hi def link udevrulesTodo Todo
93 hi def link udevrulesComment Comment
94 hi def link udevrulesRuleKey Keyword
95 hi def link udevrulesDelimiter Delimiter
96 hi def link udevrulesAssignKey Identifier
97 hi def link udevrulesPath Identifier
98 hi def link udevrulesVariable Identifier
99 " XXX: setting this to Operator makes for extremely intense highlighting.
100 hi def link udevrulesEq Normal
101 hi def link udevrulesRuleEq udevrulesEq
102 hi def link udevrulesEStringEq udevrulesEq
103 hi def link udevrulesOptionsEq udevrulesEq
104 hi def link udevrulesEString udevrulesString
105 hi def link udevrulesStrEscapes SpecialChar
106 hi def link udevrulesStrNumber Number
107 hi def link udevrulesString String
108 hi def link udevrulesPattern SpecialChar
109 hi def link udevrulesPatRange SpecialChar
110 hi def link udevrulesOptions udevrulesString
111 hi def link udevrulesOption Type
112 hi def link udevrulesOptionSep Delimiter
114 let b:current_syntax = "udevrules"
116 let &cpo = s:cpo_save