Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 1 | " Vim syntax file |
| 2 | " Language: udev(8) rules file |
Bram Moolenaar | 57657d8 | 2006-04-21 22:12:41 +0000 | [diff] [blame] | 3 | " Maintainer: Nikolai Weibull <now@bitwi.se> |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 4 | " Latest Revision: 2006-12-18 |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 5 | |
| 6 | if exists("b:current_syntax") |
| 7 | finish |
| 8 | endif |
| 9 | |
| 10 | let s:cpo_save = &cpo |
| 11 | set cpo&vim |
| 12 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 13 | " TODO: Line continuations. |
| 14 | |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 15 | syn keyword udevrulesTodo contained TODO FIXME XXX NOTE |
| 16 | |
| 17 | syn region udevrulesComment display oneline start='^\s*#' end='$' |
| 18 | \ contains=udevrulesTodo,@Spell |
| 19 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 20 | syn keyword udevrulesRuleKey ACTION DEVPATH KERNEL SUBSYSTEM KERNELS |
| 21 | \ SUBSYSTEMS DRIVERS RESULT |
| 22 | \ nextgroup=udevrulesRuleTest |
| 23 | \ skipwhite |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 24 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 25 | syn keyword udevrulesRuleKey ATTRS nextgroup=udevrulesAttrsPath |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 26 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 27 | syn region udevrulesAttrsPath display transparent |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 28 | \ matchgroup=udevrulesDelimiter start='{' |
| 29 | \ matchgroup=udevrulesDelimiter end='}' |
| 30 | \ contains=udevrulesPath |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 31 | \ nextgroup=udevrulesRuleTest |
| 32 | \ skipwhite |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 33 | |
| 34 | syn keyword udevrulesRuleKey ENV nextgroup=udevrulesEnvVar |
| 35 | |
| 36 | syn region udevrulesEnvVar display transparent |
| 37 | \ matchgroup=udevrulesDelimiter start='{' |
| 38 | \ matchgroup=udevrulesDelimiter end='}' |
| 39 | \ contains=udevrulesVariable |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 40 | \ nextgroup=udevrulesRuleTest,udevrulesRuleEq |
| 41 | \ skipwhite |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 42 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 43 | syn keyword udevrulesRuleKey PROGRAM RESULT |
| 44 | \ nextgroup=udevrulesEStringTest,udevrulesEStringEq |
| 45 | \ skipwhite |
| 46 | |
| 47 | syn keyword udevrulesAssignKey NAME SYMLINK OWNER GROUP RUN |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 48 | \ nextgroup=udevrulesEStringEq |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 49 | \ skipwhite |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 50 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 51 | syn keyword udevrulesAssignKey MODE LABEL GOTO WAIT_FOR_SYSFS |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 52 | \ nextgroup=udevrulesRuleEq |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 53 | \ skipwhite |
| 54 | |
| 55 | syn keyword udevrulesAssignKey ATTR nextgroup=udevrulesAttrsPath |
| 56 | |
| 57 | syn region udevrulesAttrKey display transparent |
| 58 | \ matchgroup=udevrulesDelimiter start='{' |
| 59 | \ matchgroup=udevrulesDelimiter end='}' |
| 60 | \ contains=udevrulesKey |
| 61 | \ nextgroup=udevrulesRuleEq |
| 62 | \ skipwhite |
| 63 | |
| 64 | syn keyword udevrulesAssignKey IMPORT nextgroup=udevrulesImport, |
| 65 | \ udevrulesEStringEq |
| 66 | \ skipwhite |
| 67 | |
| 68 | syn region udevrulesImport display transparent |
| 69 | \ matchgroup=udevrulesDelimiter start='{' |
| 70 | \ matchgroup=udevrulesDelimiter end='}' |
| 71 | \ contains=udevrulesImportType |
| 72 | \ nextgroup=udevrulesEStringEq |
| 73 | \ skipwhite |
| 74 | |
| 75 | syn keyword udevrulesImportType program file parent |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 76 | |
| 77 | syn keyword udevrulesAssignKey OPTIONS |
| 78 | \ nextgroup=udevrulesOptionsEq |
| 79 | |
| 80 | syn match udevrulesPath contained display '[^}]\+' |
| 81 | |
| 82 | syn match udevrulesVariable contained display '[^}]\+' |
| 83 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 84 | syn match udevrulesRuleTest contained display '[=!:]=' |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 85 | \ nextgroup=udevrulesString skipwhite |
| 86 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 87 | syn match udevrulesEStringTest contained display '[=!+:]=' |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 88 | \ nextgroup=udevrulesEString skipwhite |
| 89 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 90 | syn match udevrulesRuleEq contained display '+=\|=\ze[^=]' |
| 91 | \ nextgroup=udevrulesString skipwhite |
| 92 | |
| 93 | syn match udevrulesEStringEq contained '+=\|=\ze[^=]' |
| 94 | \ nextgroup=udevrulesEString skipwhite |
| 95 | |
| 96 | syn match udevrulesOptionsEq contained '+=\|=\ze[^=]' |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 97 | \ nextgroup=udevrulesOptions skipwhite |
| 98 | |
| 99 | syn region udevrulesEString contained display oneline start=+"+ end=+"+ |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 100 | \ contains=udevrulesStrEscapes,udevrulesStrVars |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 101 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 102 | syn match udevrulesStrEscapes contained '%[knpbMmcPrN%]' |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 103 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 104 | " TODO: This can actually stand alone (without {…}), so add a nextgroup here. |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 105 | syn region udevrulesStrEscapes contained start='%c{' end='}' |
| 106 | \ contains=udevrulesStrNumber |
| 107 | |
| 108 | syn region udevrulesStrEscapes contained start='%s{' end='}' |
| 109 | \ contains=udevrulesPath |
| 110 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 111 | syn region udevrulesStrEscapes contained start='%E{' end='}' |
| 112 | \ contains=udevrulesVariable |
| 113 | |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 114 | syn match udevrulesStrNumber contained '\d\++\=' |
| 115 | |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 116 | syn match udevrulesStrVars contained display '$\%(kernel\|number\|devpath\|id\|major\|minor\|result\|parent\|root\|tempnode\)\>' |
| 117 | |
| 118 | syn region udevrulesStrVars contained start='$attr{' end='}' |
| 119 | \ contains=udevrulesPath |
| 120 | |
| 121 | syn region udevrulesStrVars contained start='$env{' end='}' |
| 122 | \ contains=udevrulesVariable |
| 123 | |
| 124 | syn match udevrulesStrVars contained display '\$\$' |
| 125 | |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 126 | syn region udevrulesString contained display oneline start=+"+ end=+"+ |
| 127 | \ contains=udevrulesPattern |
| 128 | |
| 129 | syn match udevrulesPattern contained '[*?]' |
| 130 | syn region udevrulesPattern contained start='\[!\=' end='\]' |
| 131 | \ contains=udevrulesPatRange |
| 132 | |
| 133 | syn match udevrulesPatRange contained '[^[-]-[^]-]' |
| 134 | |
| 135 | syn region udevrulesOptions contained display oneline start=+"+ end=+"+ |
| 136 | \ contains=udevrulesOption,udevrulesOptionSep |
| 137 | |
| 138 | syn keyword udevrulesOption contained last_rule ignore_device ignore_remove |
| 139 | \ all_partitions |
| 140 | |
| 141 | syn match udevrulesOptionSep contained ',' |
| 142 | |
| 143 | hi def link udevrulesTodo Todo |
| 144 | hi def link udevrulesComment Comment |
| 145 | hi def link udevrulesRuleKey Keyword |
| 146 | hi def link udevrulesDelimiter Delimiter |
| 147 | hi def link udevrulesAssignKey Identifier |
| 148 | hi def link udevrulesPath Identifier |
| 149 | hi def link udevrulesVariable Identifier |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 150 | hi def link udevrulesAttrKey Identifier |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 151 | " XXX: setting this to Operator makes for extremely intense highlighting. |
| 152 | hi def link udevrulesEq Normal |
| 153 | hi def link udevrulesRuleEq udevrulesEq |
| 154 | hi def link udevrulesEStringEq udevrulesEq |
| 155 | hi def link udevrulesOptionsEq udevrulesEq |
| 156 | hi def link udevrulesEString udevrulesString |
| 157 | hi def link udevrulesStrEscapes SpecialChar |
| 158 | hi def link udevrulesStrNumber Number |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 159 | hi def link udevrulesStrVars Identifier |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 160 | hi def link udevrulesString String |
| 161 | hi def link udevrulesPattern SpecialChar |
| 162 | hi def link udevrulesPatRange SpecialChar |
| 163 | hi def link udevrulesOptions udevrulesString |
| 164 | hi def link udevrulesOption Type |
| 165 | hi def link udevrulesOptionSep Delimiter |
Bram Moolenaar | 2c7a763 | 2007-05-10 18:19:11 +0000 | [diff] [blame] | 166 | hi def link udevrulesImportType Type |
Bram Moolenaar | 0dc065e | 2005-07-04 22:49:24 +0000 | [diff] [blame] | 167 | |
| 168 | let b:current_syntax = "udevrules" |
| 169 | |
| 170 | let &cpo = s:cpo_save |
| 171 | unlet s:cpo_save |