10dc065eeSBram Moolenaar" Vim syntax file 20dc065eeSBram Moolenaar" Language: udev(8) rules file 3*214641f7SBram Moolenaar" Previous Maintainer: Nikolai Weibull <[email protected]> 42c7a7638SBram Moolenaar" Latest Revision: 2006-12-18 50dc065eeSBram Moolenaar 60dc065eeSBram Moolenaarif exists("b:current_syntax") 70dc065eeSBram Moolenaar finish 80dc065eeSBram Moolenaarendif 90dc065eeSBram Moolenaar 100dc065eeSBram Moolenaarlet s:cpo_save = &cpo 110dc065eeSBram Moolenaarset cpo&vim 120dc065eeSBram Moolenaar 132c7a7638SBram Moolenaar" TODO: Line continuations. 142c7a7638SBram Moolenaar 150dc065eeSBram Moolenaarsyn keyword udevrulesTodo contained TODO FIXME XXX NOTE 160dc065eeSBram Moolenaar 170dc065eeSBram Moolenaarsyn region udevrulesComment display oneline start='^\s*#' end='$' 180dc065eeSBram Moolenaar \ contains=udevrulesTodo,@Spell 190dc065eeSBram Moolenaar 202c7a7638SBram Moolenaarsyn keyword udevrulesRuleKey ACTION DEVPATH KERNEL SUBSYSTEM KERNELS 212c7a7638SBram Moolenaar \ SUBSYSTEMS DRIVERS RESULT 222c7a7638SBram Moolenaar \ nextgroup=udevrulesRuleTest 232c7a7638SBram Moolenaar \ skipwhite 240dc065eeSBram Moolenaar 252c7a7638SBram Moolenaarsyn keyword udevrulesRuleKey ATTRS nextgroup=udevrulesAttrsPath 260dc065eeSBram Moolenaar 272c7a7638SBram Moolenaarsyn region udevrulesAttrsPath display transparent 280dc065eeSBram Moolenaar \ matchgroup=udevrulesDelimiter start='{' 290dc065eeSBram Moolenaar \ matchgroup=udevrulesDelimiter end='}' 300dc065eeSBram Moolenaar \ contains=udevrulesPath 312c7a7638SBram Moolenaar \ nextgroup=udevrulesRuleTest 322c7a7638SBram Moolenaar \ skipwhite 330dc065eeSBram Moolenaar 340dc065eeSBram Moolenaarsyn keyword udevrulesRuleKey ENV nextgroup=udevrulesEnvVar 350dc065eeSBram Moolenaar 360dc065eeSBram Moolenaarsyn region udevrulesEnvVar display transparent 370dc065eeSBram Moolenaar \ matchgroup=udevrulesDelimiter start='{' 380dc065eeSBram Moolenaar \ matchgroup=udevrulesDelimiter end='}' 390dc065eeSBram Moolenaar \ contains=udevrulesVariable 402c7a7638SBram Moolenaar \ nextgroup=udevrulesRuleTest,udevrulesRuleEq 412c7a7638SBram Moolenaar \ skipwhite 420dc065eeSBram Moolenaar 432c7a7638SBram Moolenaarsyn keyword udevrulesRuleKey PROGRAM RESULT 442c7a7638SBram Moolenaar \ nextgroup=udevrulesEStringTest,udevrulesEStringEq 452c7a7638SBram Moolenaar \ skipwhite 462c7a7638SBram Moolenaar 472c7a7638SBram Moolenaarsyn keyword udevrulesAssignKey NAME SYMLINK OWNER GROUP RUN 480dc065eeSBram Moolenaar \ nextgroup=udevrulesEStringEq 492c7a7638SBram Moolenaar \ skipwhite 500dc065eeSBram Moolenaar 512c7a7638SBram Moolenaarsyn keyword udevrulesAssignKey MODE LABEL GOTO WAIT_FOR_SYSFS 520dc065eeSBram Moolenaar \ nextgroup=udevrulesRuleEq 532c7a7638SBram Moolenaar \ skipwhite 542c7a7638SBram Moolenaar 552c7a7638SBram Moolenaarsyn keyword udevrulesAssignKey ATTR nextgroup=udevrulesAttrsPath 562c7a7638SBram Moolenaar 572c7a7638SBram Moolenaarsyn region udevrulesAttrKey display transparent 582c7a7638SBram Moolenaar \ matchgroup=udevrulesDelimiter start='{' 592c7a7638SBram Moolenaar \ matchgroup=udevrulesDelimiter end='}' 602c7a7638SBram Moolenaar \ contains=udevrulesKey 612c7a7638SBram Moolenaar \ nextgroup=udevrulesRuleEq 622c7a7638SBram Moolenaar \ skipwhite 632c7a7638SBram Moolenaar 642c7a7638SBram Moolenaarsyn keyword udevrulesAssignKey IMPORT nextgroup=udevrulesImport, 652c7a7638SBram Moolenaar \ udevrulesEStringEq 662c7a7638SBram Moolenaar \ skipwhite 672c7a7638SBram Moolenaar 682c7a7638SBram Moolenaarsyn region udevrulesImport display transparent 692c7a7638SBram Moolenaar \ matchgroup=udevrulesDelimiter start='{' 702c7a7638SBram Moolenaar \ matchgroup=udevrulesDelimiter end='}' 712c7a7638SBram Moolenaar \ contains=udevrulesImportType 722c7a7638SBram Moolenaar \ nextgroup=udevrulesEStringEq 732c7a7638SBram Moolenaar \ skipwhite 742c7a7638SBram Moolenaar 752c7a7638SBram Moolenaarsyn keyword udevrulesImportType program file parent 760dc065eeSBram Moolenaar 770dc065eeSBram Moolenaarsyn keyword udevrulesAssignKey OPTIONS 780dc065eeSBram Moolenaar \ nextgroup=udevrulesOptionsEq 790dc065eeSBram Moolenaar 800dc065eeSBram Moolenaarsyn match udevrulesPath contained display '[^}]\+' 810dc065eeSBram Moolenaar 820dc065eeSBram Moolenaarsyn match udevrulesVariable contained display '[^}]\+' 830dc065eeSBram Moolenaar 842c7a7638SBram Moolenaarsyn match udevrulesRuleTest contained display '[=!:]=' 850dc065eeSBram Moolenaar \ nextgroup=udevrulesString skipwhite 860dc065eeSBram Moolenaar 872c7a7638SBram Moolenaarsyn match udevrulesEStringTest contained display '[=!+:]=' 880dc065eeSBram Moolenaar \ nextgroup=udevrulesEString skipwhite 890dc065eeSBram Moolenaar 902c7a7638SBram Moolenaarsyn match udevrulesRuleEq contained display '+=\|=\ze[^=]' 912c7a7638SBram Moolenaar \ nextgroup=udevrulesString skipwhite 922c7a7638SBram Moolenaar 932c7a7638SBram Moolenaarsyn match udevrulesEStringEq contained '+=\|=\ze[^=]' 942c7a7638SBram Moolenaar \ nextgroup=udevrulesEString skipwhite 952c7a7638SBram Moolenaar 962c7a7638SBram Moolenaarsyn match udevrulesOptionsEq contained '+=\|=\ze[^=]' 970dc065eeSBram Moolenaar \ nextgroup=udevrulesOptions skipwhite 980dc065eeSBram Moolenaar 990dc065eeSBram Moolenaarsyn region udevrulesEString contained display oneline start=+"+ end=+"+ 1002c7a7638SBram Moolenaar \ contains=udevrulesStrEscapes,udevrulesStrVars 1010dc065eeSBram Moolenaar 1022c7a7638SBram Moolenaarsyn match udevrulesStrEscapes contained '%[knpbMmcPrN%]' 1030dc065eeSBram Moolenaar 1042c7a7638SBram Moolenaar" TODO: This can actually stand alone (without {…}), so add a nextgroup here. 1050dc065eeSBram Moolenaarsyn region udevrulesStrEscapes contained start='%c{' end='}' 1060dc065eeSBram Moolenaar \ contains=udevrulesStrNumber 1070dc065eeSBram Moolenaar 1080dc065eeSBram Moolenaarsyn region udevrulesStrEscapes contained start='%s{' end='}' 1090dc065eeSBram Moolenaar \ contains=udevrulesPath 1100dc065eeSBram Moolenaar 1112c7a7638SBram Moolenaarsyn region udevrulesStrEscapes contained start='%E{' end='}' 1122c7a7638SBram Moolenaar \ contains=udevrulesVariable 1132c7a7638SBram Moolenaar 1140dc065eeSBram Moolenaarsyn match udevrulesStrNumber contained '\d\++\=' 1150dc065eeSBram Moolenaar 1162c7a7638SBram Moolenaarsyn match udevrulesStrVars contained display '$\%(kernel\|number\|devpath\|id\|major\|minor\|result\|parent\|root\|tempnode\)\>' 1172c7a7638SBram Moolenaar 1182c7a7638SBram Moolenaarsyn region udevrulesStrVars contained start='$attr{' end='}' 1192c7a7638SBram Moolenaar \ contains=udevrulesPath 1202c7a7638SBram Moolenaar 1212c7a7638SBram Moolenaarsyn region udevrulesStrVars contained start='$env{' end='}' 1222c7a7638SBram Moolenaar \ contains=udevrulesVariable 1232c7a7638SBram Moolenaar 1242c7a7638SBram Moolenaarsyn match udevrulesStrVars contained display '\$\$' 1252c7a7638SBram Moolenaar 1260dc065eeSBram Moolenaarsyn region udevrulesString contained display oneline start=+"+ end=+"+ 1270dc065eeSBram Moolenaar \ contains=udevrulesPattern 1280dc065eeSBram Moolenaar 1290dc065eeSBram Moolenaarsyn match udevrulesPattern contained '[*?]' 1300dc065eeSBram Moolenaarsyn region udevrulesPattern contained start='\[!\=' end='\]' 1310dc065eeSBram Moolenaar \ contains=udevrulesPatRange 1320dc065eeSBram Moolenaar 1330dc065eeSBram Moolenaarsyn match udevrulesPatRange contained '[^[-]-[^]-]' 1340dc065eeSBram Moolenaar 1350dc065eeSBram Moolenaarsyn region udevrulesOptions contained display oneline start=+"+ end=+"+ 1360dc065eeSBram Moolenaar \ contains=udevrulesOption,udevrulesOptionSep 1370dc065eeSBram Moolenaar 1380dc065eeSBram Moolenaarsyn keyword udevrulesOption contained last_rule ignore_device ignore_remove 1390dc065eeSBram Moolenaar \ all_partitions 1400dc065eeSBram Moolenaar 1410dc065eeSBram Moolenaarsyn match udevrulesOptionSep contained ',' 1420dc065eeSBram Moolenaar 1430dc065eeSBram Moolenaarhi def link udevrulesTodo Todo 1440dc065eeSBram Moolenaarhi def link udevrulesComment Comment 1450dc065eeSBram Moolenaarhi def link udevrulesRuleKey Keyword 1460dc065eeSBram Moolenaarhi def link udevrulesDelimiter Delimiter 1470dc065eeSBram Moolenaarhi def link udevrulesAssignKey Identifier 1480dc065eeSBram Moolenaarhi def link udevrulesPath Identifier 1490dc065eeSBram Moolenaarhi def link udevrulesVariable Identifier 1502c7a7638SBram Moolenaarhi def link udevrulesAttrKey Identifier 1510dc065eeSBram Moolenaar" XXX: setting this to Operator makes for extremely intense highlighting. 1520dc065eeSBram Moolenaarhi def link udevrulesEq Normal 1530dc065eeSBram Moolenaarhi def link udevrulesRuleEq udevrulesEq 1540dc065eeSBram Moolenaarhi def link udevrulesEStringEq udevrulesEq 1550dc065eeSBram Moolenaarhi def link udevrulesOptionsEq udevrulesEq 1560dc065eeSBram Moolenaarhi def link udevrulesEString udevrulesString 1570dc065eeSBram Moolenaarhi def link udevrulesStrEscapes SpecialChar 1580dc065eeSBram Moolenaarhi def link udevrulesStrNumber Number 1592c7a7638SBram Moolenaarhi def link udevrulesStrVars Identifier 1600dc065eeSBram Moolenaarhi def link udevrulesString String 1610dc065eeSBram Moolenaarhi def link udevrulesPattern SpecialChar 1620dc065eeSBram Moolenaarhi def link udevrulesPatRange SpecialChar 1630dc065eeSBram Moolenaarhi def link udevrulesOptions udevrulesString 1640dc065eeSBram Moolenaarhi def link udevrulesOption Type 1650dc065eeSBram Moolenaarhi def link udevrulesOptionSep Delimiter 1662c7a7638SBram Moolenaarhi def link udevrulesImportType Type 1670dc065eeSBram Moolenaar 1680dc065eeSBram Moolenaarlet b:current_syntax = "udevrules" 1690dc065eeSBram Moolenaar 1700dc065eeSBram Moolenaarlet &cpo = s:cpo_save 1710dc065eeSBram Moolenaarunlet s:cpo_save 172