dts.vim 5.0 KB

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