1
0
Fork 0
mirror of https://github.com/vim/vim synced 2025-03-21 01:05:11 +01:00
vim/runtime/syntax/make.vim

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

152 lines
6.3 KiB
VimL
Raw Normal View History

2004-06-13 20:20:40 +00:00
" Vim syntax file
" Language: Makefile
2020-01-21 22:33:58 +01:00
" Maintainer: Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name>, <https://github.com/rohieb>
2019-02-17 21:18:32 +01:00
" Previous Maintainer: Claudio Fleiner <claudio@fleiner.com>
2020-01-21 22:33:58 +01:00
" URL: https://github.com/vim/vim/blob/master/runtime/syntax/make.vim
2022-11-09 21:21:04 +00:00
" Last Change: 2022 Nov 06
2004-06-13 20:20:40 +00:00
" quit when a syntax file was already loaded
if exists("b:current_syntax")
2004-06-13 20:20:40 +00:00
finish
endif
2012-10-05 22:26:30 +02:00
let s:cpo_save = &cpo
set cpo&vim
2004-06-13 20:20:40 +00:00
" some special characters
2006-04-06 20:18:50 +00:00
syn match makeSpecial "^\s*[@+-]\+"
2004-06-13 20:20:40 +00:00
syn match makeNextLine "\\\n\s*"
2012-10-05 22:26:30 +02:00
" catch unmatched define/endef keywords. endef only matches it is by itself on a line, possibly followed by a commend
2020-03-14 08:19:51 +01:00
syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$"
\ contains=makeStatement,makeIdent,makePreCondit,makeDefine
2004-06-13 20:20:40 +00:00
" Microsoft Makefile specials
syn case ignore
syn match makeInclude "^!\s*include\s.*$"
2019-04-04 13:11:03 +02:00
syn match makePreCondit "^!\s*\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|else\s*if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>"
2004-06-13 20:20:40 +00:00
syn case match
" identifiers
if exists("b:make_microsoft") || exists("make_microsoft")
syn region makeIdent start="\$(" end=")" contains=makeStatement,makeIdent
syn region makeIdent start="\${" end="}" contains=makeStatement,makeIdent
else
syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent
syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent
endif
2004-06-13 20:20:40 +00:00
syn match makeIdent "\$\$\w*"
syn match makeIdent "\$[^({]"
2015-02-28 13:11:45 +01:00
syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2
2020-01-21 22:33:58 +01:00
syn match makeIdent "^ *[^:#= \t]*\s*::="me=e-3
2015-02-28 13:11:45 +01:00
syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1
2004-06-13 20:20:40 +00:00
syn match makeIdent "%"
" Makefile.in variables
syn match makeConfig "@[A-Za-z0-9_]\+@"
" make targets
syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1
syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2
2004-06-13 20:20:40 +00:00
2020-03-14 08:19:51 +01:00
syn region makeTarget transparent matchgroup=makeTarget
2022-11-09 21:21:04 +00:00
\ start="^[~A-Za-z0-9_./$(){}%-][A-Za-z0-9_./\t ${}()%-]*&\?:\?:\{1,2}[^:=]"rs=e-1
2022-07-25 15:42:07 +01:00
\ end="[^\\]$"
2020-03-14 08:19:51 +01:00
\ keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment,makeDString
\ skipnl nextGroup=makeCommands
2022-11-09 21:21:04 +00:00
syn match makeTarget "^[~A-Za-z0-9_./$(){}%*@-][A-Za-z0-9_./\t $(){}%*@-]*&\?::\=\s*$"
2020-03-14 08:19:51 +01:00
\ contains=makeIdent,makeSpecTarget,makeComment
\ skipnl nextgroup=makeCommands,makeCommandError
syn region makeSpecTarget transparent matchgroup=makeSpecTarget
2022-07-25 15:42:07 +01:00
\ start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\|ONESHELL\)\>\s*:\{1,2}[^:=]"rs=e-1
2020-03-14 08:19:51 +01:00
\ end="[^\\]$" keepend
\ contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands
2022-07-25 15:42:07 +01:00
syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\|ONESHELL\)\>\s*::\=\s*$"
2020-03-14 08:19:51 +01:00
\ contains=makeIdent,makeComment
\ skipnl nextgroup=makeCommands,makeCommandError
2004-06-13 20:20:40 +00:00
syn match makeCommandError "^\s\+\S.*" contained
2020-03-14 08:19:51 +01:00
syn region makeCommands contained start=";"hs=s+1 start="^\t"
\ end="^[^\t#]"me=e-1,re=e-1 end="^$"
\ contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString
\ nextgroup=makeCommandError
2004-06-13 20:20:40 +00:00
syn match makeCmdNextLine "\\\n."he=e-1 contained
2020-03-14 08:19:51 +01:00
" some directives
syn match makePreCondit "^ *\(ifn\=\(eq\|def\)\>\|else\(\s\+ifn\=\(eq\|def\)\)\=\>\|endif\>\)"
syn match makeInclude "^ *[-s]\=include\s.*$"
syn match makeStatement "^ *vpath"
syn match makeExport "^ *\(export\|unexport\)\>"
2020-05-07 18:56:00 +02:00
syn match makeOverride "^ *override\>"
2004-06-13 20:20:40 +00:00
" Statements / Functions (GNU make)
2019-02-17 21:18:32 +01:00
syn match makeStatement contained "(\(abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|file\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|guile\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|subst\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1
2004-06-13 20:20:40 +00:00
" Comment
if !exists("make_no_comments")
if exists("b:make_microsoft") || exists("make_microsoft")
syn match makeComment "#.*" contains=@Spell,makeTodo
else
syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo
syn match makeComment "#$" contains=@Spell
endif
2004-06-13 20:20:40 +00:00
endif
syn keyword makeTodo TODO FIXME XXX contained
" match escaped quotes and any other escaped character
" except for $, as a backslash in front of a $ does
" not make it a standard character, but instead it will
" still act as the beginning of a variable
" The escaped char is not highlightet currently
syn match makeEscapedChar "\\[^$]"
syn region makeDString start=+\(\\\)\@<!"+ skip=+\\.+ end=+"+ contained contains=makeIdent
syn region makeSString start=+\(\\\)\@<!'+ skip=+\\.+ end=+'+ contained contains=makeIdent
2004-06-13 20:20:40 +00:00
syn region makeBString start=+\(\\\)\@<!`+ skip=+\\.+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine
" Syncing
syn sync minlines=20 maxlines=200
" Sync on Make command block region: When searching backwards hits a line that
" can't be a command or a comment, use makeCommands if it looks like a target,
" NONE otherwise.
syn sync match makeCommandSync groupthere NONE "^[^\t#]"
syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"
syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}\s*$"
" Define the default highlighting.
" Only when an item doesn't have highlighting yet
2019-04-04 13:11:03 +02:00
hi def link makeNextLine makeSpecial
hi def link makeCmdNextLine makeSpecial
2020-03-14 08:19:51 +01:00
hi link makeOverride makeStatement
hi link makeExport makeStatement
2019-04-04 13:11:03 +02:00
hi def link makeSpecTarget Statement
if !exists("make_no_commands")
2019-04-04 13:11:03 +02:00
hi def link makeCommands Number
2004-06-13 20:20:40 +00:00
endif
2019-04-04 13:11:03 +02:00
hi def link makeImplicit Function
hi def link makeTarget Function
hi def link makeInclude Include
2019-04-04 13:11:03 +02:00
hi def link makePreCondit PreCondit
hi def link makeStatement Statement
hi def link makeIdent Identifier
hi def link makeSpecial Special
hi def link makeComment Comment
hi def link makeDString String
hi def link makeSString String
hi def link makeBString Function
hi def link makeError Error
hi def link makeTodo Todo
hi def link makeDefine Define
hi def link makeCommandError Error
hi def link makeConfig PreCondit
2004-06-13 20:20:40 +00:00
let b:current_syntax = "make"
2012-10-05 22:26:30 +02:00
let &cpo = s:cpo_save
unlet s:cpo_save
2004-06-13 20:20:40 +00:00
" vim: ts=8