make.vim 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. " Vim syntax file
  2. " Language: Makefile
  3. " Maintainer: Claudio Fleiner <claudio@fleiner.com>
  4. " URL: http://www.fleiner.com/vim/syntax/make.vim
  5. " Last Change: 2006 Jun 19
  6. " For version 5.x: Clear all syntax items
  7. " For version 6.x: Quit when a syntax file was already loaded
  8. if version < 600
  9. syntax clear
  10. elseif exists("b:current_syntax")
  11. finish
  12. endif
  13. " some special characters
  14. syn match makeSpecial "^\s*[@+-]\+"
  15. syn match makeNextLine "\\\n\s*"
  16. " some directives
  17. syn match makePreCondit "^ *\(ifeq\>\|else\>\|endif\>\|ifneq\>\|ifdef\>\|ifndef\>\)"
  18. syn match makeInclude "^ *[-s]\=include"
  19. syn match makeStatement "^ *vpath"
  20. syn match makeExport "^ *\(export\|unexport\)\>"
  21. syn match makeOverride "^ *override"
  22. hi link makeOverride makeStatement
  23. hi link makeExport makeStatement
  24. " Koehler: catch unmatched define/endef keywords. endef only matches it is by itself on a line
  25. syn region makeDefine start="^\s*define\s" end="^\s*endef\s*$" contains=makeStatement,makeIdent,makePreCondit,makeDefine
  26. " Microsoft Makefile specials
  27. syn case ignore
  28. syn match makeInclude "^! *include"
  29. syn match makePreCondit "! *\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|elseif\|else if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>"
  30. syn case match
  31. " identifiers
  32. syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent,makeSString,makeDString
  33. syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent,makeSString,makeDString
  34. syn match makeIdent "\$\$\w*"
  35. syn match makeIdent "\$[^({]"
  36. syn match makeIdent "^ *\a\w*\s*[:+?!*]="me=e-2
  37. syn match makeIdent "^ *\a\w*\s*="me=e-1
  38. syn match makeIdent "%"
  39. " Makefile.in variables
  40. syn match makeConfig "@[A-Za-z0-9_]\+@"
  41. " make targets
  42. " syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>"
  43. syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2 nextgroup=makeSource
  44. syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1 nextgroup=makeSource
  45. syn region makeTarget transparent matchgroup=makeTarget start="^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"rs=e-1 end=";"re=e-1,me=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine skipnl nextGroup=makeCommands
  46. syn match makeTarget "^[A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*::\=\s*$" contains=makeIdent,makeSpecTarget skipnl nextgroup=makeCommands,makeCommandError
  47. syn region makeSpecTarget transparent matchgroup=makeSpecTarget start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*:\{1,2}[^:=]"rs=e-1 end="[^\\]$" keepend contains=makeIdent,makeSpecTarget,makeNextLine skipnl nextGroup=makeCommands
  48. syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*::\=\s*$" contains=makeIdent skipnl nextgroup=makeCommands,makeCommandError
  49. syn match makeCommandError "^\s\+\S.*" contained
  50. syn region makeCommands start=";"hs=s+1 start="^\t" end="^[^\t#]"me=e-1,re=e-1 end="^$" contained contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString nextgroup=makeCommandError
  51. syn match makeCmdNextLine "\\\n."he=e-1 contained
  52. " Statements / Functions (GNU make)
  53. syn match makeStatement contained "(\(subst\|addprefix\|addsuffix\|basename\|call\|dir\|error\|filter-out\|filter\|findstring\|firstword\|foreach\|if\|join\|notdir\|origin\|patsubst\|shell\|sort\|strip\|suffix\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1
  54. " Comment
  55. if exists("make_microsoft")
  56. syn match makeComment "#.*" contains=@Spell,makeTodo
  57. elseif !exists("make_no_comments")
  58. syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo
  59. syn match makeComment "#$" contains=@Spell
  60. endif
  61. syn keyword makeTodo TODO FIXME XXX contained
  62. " match escaped quotes and any other escaped character
  63. " except for $, as a backslash in front of a $ does
  64. " not make it a standard character, but instead it will
  65. " still act as the beginning of a variable
  66. " The escaped char is not highlightet currently
  67. syn match makeEscapedChar "\\[^$]"
  68. syn region makeDString start=+\(\\\)\@<!"+ skip=+\\.+ end=+"+ contains=makeIdent
  69. syn region makeSString start=+\(\\\)\@<!'+ skip=+\\.+ end=+'+ contains=makeIdent
  70. syn region makeBString start=+\(\\\)\@<!`+ skip=+\\.+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine
  71. " Syncing
  72. syn sync minlines=20 maxlines=200
  73. " Sync on Make command block region: When searching backwards hits a line that
  74. " can't be a command or a comment, use makeCommands if it looks like a target,
  75. " NONE otherwise.
  76. syn sync match makeCommandSync groupthere NONE "^[^\t#]"
  77. syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"
  78. syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}\s*$"
  79. " Define the default highlighting.
  80. " For version 5.7 and earlier: only when not done already
  81. " For version 5.8 and later: only when an item doesn't have highlighting yet
  82. if version >= 508 || !exists("did_make_syn_inits")
  83. if version < 508
  84. let did_make_syn_inits = 1
  85. command -nargs=+ HiLink hi link <args>
  86. else
  87. command -nargs=+ HiLink hi def link <args>
  88. endif
  89. HiLink makeNextLine makeSpecial
  90. HiLink makeCmdNextLine makeSpecial
  91. HiLink makeSpecTarget Statement
  92. if !exists("make_no_commands")
  93. HiLink makeCommands Number
  94. endif
  95. HiLink makeImplicit Function
  96. HiLink makeTarget Function
  97. HiLink makeInclude Include
  98. HiLink makePreCondit PreCondit
  99. HiLink makeStatement Statement
  100. HiLink makeIdent Identifier
  101. HiLink makeSpecial Special
  102. HiLink makeComment Comment
  103. HiLink makeDString String
  104. HiLink makeSString String
  105. HiLink makeBString Function
  106. HiLink makeError Error
  107. HiLink makeTodo Todo
  108. HiLink makeDefine Define
  109. HiLink makeCommandError Error
  110. HiLink makeConfig PreCondit
  111. delcommand HiLink
  112. endif
  113. let b:current_syntax = "make"
  114. " vim: ts=8