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