dts.vim 5.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. " Vim syntax file
  2. " Language: dts/dtsi (device tree files)
  3. " Maintainer: Daniel Mack <vim@zonque.org>
  4. " Last Change: 2021 May 15
  5. if exists("b:current_syntax")
  6. finish
  7. endif
  8. syntax region dtsComment start="/\*" end="\*/"
  9. syntax match dtsReference "&[[:alpha:][:digit:]_]\+"
  10. syntax region dtsBinaryProperty start="\[" end="\]"
  11. syntax match dtsStringProperty "\".*\""
  12. syntax match dtsKeyword "/.\{-1,\}/"
  13. syntax match dtsLabel "^[[:space:]]*[[:alpha:][:digit:]_]\+:"
  14. syntax match dtsNode /[[:alpha:][:digit:]-_]\+\(@[0-9a-fA-F]\+\|\)[[:space:]]*{/he=e-1
  15. syntax region dtsCellProperty start="<" end=">" contains=dtsReference,dtsBinaryProperty,dtsStringProperty,dtsComment
  16. syntax region dtsCommentInner start="/\*" end="\*/"
  17. syntax match dtsCommentLine "//.*$"
  18. " Accept %: for # (C99)
  19. syn region cPreCondit start="^\s*\zs\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
  20. syn match cPreConditMatch display "^\s*\zs\(%:\|#\)\s*\(else\|endif\)\>"
  21. if !exists("c_no_if0")
  22. syn cluster cCppOutInGroup contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip
  23. syn region cCppOutWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse,@NoSpell fold
  24. syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse
  25. if !exists("c_no_if0_fold")
  26. syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell fold
  27. else
  28. syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
  29. endif
  30. syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit
  31. syn region cCppInWrapper start="^\s*\zs\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold
  32. syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit
  33. if !exists("c_no_if0_fold")
  34. syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold
  35. else
  36. syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2
  37. endif
  38. syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip,@Spell
  39. syn region cCppOutSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip
  40. syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc
  41. endif
  42. syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
  43. syn match cIncluded display contained "<[^>]*>"
  44. syn match cInclude display "^\s*\zs\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
  45. "syn match cLineSkip "\\$"
  46. syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti,cBadBlock
  47. syn region cDefine start="^\s*\zs\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
  48. syn region cPreProc start="^\s*\zs\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
  49. hi def link dtsCellProperty Number
  50. hi def link dtsBinaryProperty Number
  51. hi def link dtsStringProperty String
  52. hi def link dtsKeyword Include
  53. hi def link dtsLabel Label
  54. hi def link dtsNode Structure
  55. hi def link dtsReference Macro
  56. hi def link dtsComment Comment
  57. hi def link dtsCommentInner Comment
  58. hi def link dtsCommentLine Comment
  59. hi def link cInclude Include
  60. hi def link cPreProc PreProc
  61. hi def link cDefine Macro
  62. hi def link cIncluded cString
  63. hi def link cString String
  64. hi def link cCppInWrapper cCppOutWrapper
  65. hi def link cCppOutWrapper cPreCondit
  66. hi def link cPreConditMatch cPreCondit
  67. hi def link cPreCondit PreCondit
  68. hi def link cCppOutSkip cCppOutIf2
  69. hi def link cCppInElse2 cCppOutIf2
  70. hi def link cCppOutIf2 cCppOut
  71. hi def link cCppOut Comment