udevrules.vim 6.8 KB

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