home *** CD-ROM | disk | FTP | other *** search
- " 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
-