udevrules.vim (6960B)
1 " Vim syntax file 2 " Language: udev(8) rules file 3 " Previous Maintainer: Nikolai Weibull <now@bitwi.se> 4 " Latest Revision: 2006-12-18 5 6 if exists("b:current_syntax") 7 finish 8 endif 9 10 let s:cpo_save = &cpo 11 set cpo&vim 12 13 " TODO: Line continuations. 14 15 syn keyword udevrulesTodo contained TODO FIXME XXX NOTE 16 17 syn region udevrulesComment display oneline start='^\s*#' end='$' 18 \ contains=udevrulesTodo,@Spell 19 20 syn keyword udevrulesRuleKey ACTION DEVPATH KERNEL SUBSYSTEM KERNELS 21 \ SUBSYSTEMS DRIVERS RESULT 22 \ nextgroup=udevrulesRuleTest 23 \ skipwhite 24 25 syn keyword udevrulesRuleKey ATTRS nextgroup=udevrulesAttrsPath 26 27 syn region udevrulesAttrsPath display transparent 28 \ matchgroup=udevrulesDelimiter start='{' 29 \ matchgroup=udevrulesDelimiter end='}' 30 \ contains=udevrulesPath 31 \ nextgroup=udevrulesRuleTest 32 \ skipwhite 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 40 \ nextgroup=udevrulesRuleTest,udevrulesRuleEq 41 \ skipwhite 42 43 syn keyword udevrulesRuleKey PROGRAM RESULT 44 \ nextgroup=udevrulesEStringTest,udevrulesEStringEq 45 \ skipwhite 46 47 syn keyword udevrulesAssignKey NAME SYMLINK OWNER GROUP RUN 48 \ nextgroup=udevrulesEStringEq 49 \ skipwhite 50 51 syn keyword udevrulesAssignKey MODE LABEL GOTO WAIT_FOR_SYSFS 52 \ nextgroup=udevrulesRuleEq 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 76 77 syn keyword udevrulesAssignKey OPTIONS 78 \ nextgroup=udevrulesOptionsEq 79 80 syn match udevrulesPath contained display '[^}]\+' 81 82 syn match udevrulesVariable contained display '[^}]\+' 83 84 syn match udevrulesRuleTest contained display '[=!:]=' 85 \ nextgroup=udevrulesString skipwhite 86 87 syn match udevrulesEStringTest contained display '[=!+:]=' 88 \ nextgroup=udevrulesEString skipwhite 89 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[^=]' 97 \ nextgroup=udevrulesOptions skipwhite 98 99 syn region udevrulesEString contained display oneline start=+"+ end=+"+ 100 \ contains=udevrulesStrEscapes,udevrulesStrVars 101 102 syn match udevrulesStrEscapes contained '%[knpbMmcPrN%]' 103 104 " TODO: This can actually stand alone (without {…}), so add a nextgroup here. 105 syn region udevrulesStrEscapes contained start='%c{' end='}' 106 \ contains=udevrulesStrNumber 107 108 syn region udevrulesStrEscapes contained start='%s{' end='}' 109 \ contains=udevrulesPath 110 111 syn region udevrulesStrEscapes contained start='%E{' end='}' 112 \ contains=udevrulesVariable 113 114 syn match udevrulesStrNumber contained '\d\++\=' 115 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 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 150 hi def link udevrulesAttrKey Identifier 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 159 hi def link udevrulesStrVars Identifier 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 166 hi def link udevrulesImportType Type 167 168 let b:current_syntax = "udevrules" 169 170 let &cpo = s:cpo_save 171 unlet s:cpo_save