blob: ce156ccc13515499273c95bad5dd409651039f8e [file] [log] [blame]
Bram Moolenaar0dc065e2005-07-04 22:49:24 +00001" Vim syntax file
Bram Moolenaar214641f2017-03-05 17:04:09 +01002" Language: udev(8) rules file
3" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
4" Latest Revision: 2006-12-18
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
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000013" TODO: Line continuations.
14
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000015syn keyword udevrulesTodo contained TODO FIXME XXX NOTE
16
17syn region udevrulesComment display oneline start='^\s*#' end='$'
18 \ contains=udevrulesTodo,@Spell
19
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000020syn keyword udevrulesRuleKey ACTION DEVPATH KERNEL SUBSYSTEM KERNELS
21 \ SUBSYSTEMS DRIVERS RESULT
22 \ nextgroup=udevrulesRuleTest
23 \ skipwhite
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000024
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000025syn keyword udevrulesRuleKey ATTRS nextgroup=udevrulesAttrsPath
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000026
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000027syn region udevrulesAttrsPath display transparent
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000028 \ matchgroup=udevrulesDelimiter start='{'
29 \ matchgroup=udevrulesDelimiter end='}'
30 \ contains=udevrulesPath
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000031 \ nextgroup=udevrulesRuleTest
32 \ skipwhite
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000033
34syn keyword udevrulesRuleKey ENV nextgroup=udevrulesEnvVar
35
36syn region udevrulesEnvVar display transparent
37 \ matchgroup=udevrulesDelimiter start='{'
38 \ matchgroup=udevrulesDelimiter end='}'
39 \ contains=udevrulesVariable
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000040 \ nextgroup=udevrulesRuleTest,udevrulesRuleEq
41 \ skipwhite
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000042
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000043syn keyword udevrulesRuleKey PROGRAM RESULT
44 \ nextgroup=udevrulesEStringTest,udevrulesEStringEq
45 \ skipwhite
46
47syn keyword udevrulesAssignKey NAME SYMLINK OWNER GROUP RUN
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000048 \ nextgroup=udevrulesEStringEq
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000049 \ skipwhite
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000050
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000051syn keyword udevrulesAssignKey MODE LABEL GOTO WAIT_FOR_SYSFS
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000052 \ nextgroup=udevrulesRuleEq
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000053 \ skipwhite
54
55syn keyword udevrulesAssignKey ATTR nextgroup=udevrulesAttrsPath
56
57syn region udevrulesAttrKey display transparent
58 \ matchgroup=udevrulesDelimiter start='{'
59 \ matchgroup=udevrulesDelimiter end='}'
60 \ contains=udevrulesKey
61 \ nextgroup=udevrulesRuleEq
62 \ skipwhite
63
64syn keyword udevrulesAssignKey IMPORT nextgroup=udevrulesImport,
65 \ udevrulesEStringEq
66 \ skipwhite
67
68syn region udevrulesImport display transparent
69 \ matchgroup=udevrulesDelimiter start='{'
70 \ matchgroup=udevrulesDelimiter end='}'
71 \ contains=udevrulesImportType
72 \ nextgroup=udevrulesEStringEq
73 \ skipwhite
74
75syn keyword udevrulesImportType program file parent
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000076
77syn keyword udevrulesAssignKey OPTIONS
78 \ nextgroup=udevrulesOptionsEq
79
80syn match udevrulesPath contained display '[^}]\+'
81
82syn match udevrulesVariable contained display '[^}]\+'
83
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000084syn match udevrulesRuleTest contained display '[=!:]='
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000085 \ nextgroup=udevrulesString skipwhite
86
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000087syn match udevrulesEStringTest contained display '[=!+:]='
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000088 \ nextgroup=udevrulesEString skipwhite
89
Bram Moolenaar2c7a7632007-05-10 18:19:11 +000090syn match udevrulesRuleEq contained display '+=\|=\ze[^=]'
91 \ nextgroup=udevrulesString skipwhite
92
93syn match udevrulesEStringEq contained '+=\|=\ze[^=]'
94 \ nextgroup=udevrulesEString skipwhite
95
96syn match udevrulesOptionsEq contained '+=\|=\ze[^=]'
Bram Moolenaar0dc065e2005-07-04 22:49:24 +000097 \ nextgroup=udevrulesOptions skipwhite
98
99syn region udevrulesEString contained display oneline start=+"+ end=+"+
Bram Moolenaar2c7a7632007-05-10 18:19:11 +0000100 \ contains=udevrulesStrEscapes,udevrulesStrVars
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000101
Bram Moolenaar2c7a7632007-05-10 18:19:11 +0000102syn match udevrulesStrEscapes contained '%[knpbMmcPrN%]'
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000103
Bram Moolenaar2c7a7632007-05-10 18:19:11 +0000104" TODO: This can actually stand alone (without {…}), so add a nextgroup here.
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000105syn region udevrulesStrEscapes contained start='%c{' end='}'
106 \ contains=udevrulesStrNumber
107
108syn region udevrulesStrEscapes contained start='%s{' end='}'
109 \ contains=udevrulesPath
110
Bram Moolenaar2c7a7632007-05-10 18:19:11 +0000111syn region udevrulesStrEscapes contained start='%E{' end='}'
112 \ contains=udevrulesVariable
113
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000114syn match udevrulesStrNumber contained '\d\++\='
115
Bram Moolenaar2c7a7632007-05-10 18:19:11 +0000116syn match udevrulesStrVars contained display '$\%(kernel\|number\|devpath\|id\|major\|minor\|result\|parent\|root\|tempnode\)\>'
117
118syn region udevrulesStrVars contained start='$attr{' end='}'
119 \ contains=udevrulesPath
120
121syn region udevrulesStrVars contained start='$env{' end='}'
122 \ contains=udevrulesVariable
123
124syn match udevrulesStrVars contained display '\$\$'
125
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000126syn region udevrulesString contained display oneline start=+"+ end=+"+
127 \ contains=udevrulesPattern
128
129syn match udevrulesPattern contained '[*?]'
130syn region udevrulesPattern contained start='\[!\=' end='\]'
131 \ contains=udevrulesPatRange
132
133syn match udevrulesPatRange contained '[^[-]-[^]-]'
134
135syn region udevrulesOptions contained display oneline start=+"+ end=+"+
136 \ contains=udevrulesOption,udevrulesOptionSep
137
138syn keyword udevrulesOption contained last_rule ignore_device ignore_remove
139 \ all_partitions
140
141syn match udevrulesOptionSep contained ','
142
143hi def link udevrulesTodo Todo
144hi def link udevrulesComment Comment
145hi def link udevrulesRuleKey Keyword
146hi def link udevrulesDelimiter Delimiter
147hi def link udevrulesAssignKey Identifier
148hi def link udevrulesPath Identifier
149hi def link udevrulesVariable Identifier
Bram Moolenaar2c7a7632007-05-10 18:19:11 +0000150hi def link udevrulesAttrKey Identifier
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000151" XXX: setting this to Operator makes for extremely intense highlighting.
152hi def link udevrulesEq Normal
153hi def link udevrulesRuleEq udevrulesEq
154hi def link udevrulesEStringEq udevrulesEq
155hi def link udevrulesOptionsEq udevrulesEq
156hi def link udevrulesEString udevrulesString
157hi def link udevrulesStrEscapes SpecialChar
158hi def link udevrulesStrNumber Number
Bram Moolenaar2c7a7632007-05-10 18:19:11 +0000159hi def link udevrulesStrVars Identifier
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000160hi def link udevrulesString String
161hi def link udevrulesPattern SpecialChar
162hi def link udevrulesPatRange SpecialChar
163hi def link udevrulesOptions udevrulesString
164hi def link udevrulesOption Type
165hi def link udevrulesOptionSep Delimiter
Bram Moolenaar2c7a7632007-05-10 18:19:11 +0000166hi def link udevrulesImportType Type
Bram Moolenaar0dc065e2005-07-04 22:49:24 +0000167
168let b:current_syntax = "udevrules"
169
170let &cpo = s:cpo_save
171unlet s:cpo_save