" Maintainer: This runtime file is looking for a new maintainer.
" Previous Maintainer: Claudio Fleiner <claudio@fleiner.com>, Roland Hieber <https://github.com/rohieb>
" URL: https://github.com/vim/vim/blob/master/runtime/syntax/make.vim
-" Last Change: 2022 Nov 06
+" Last Change: 2026 Aug 05
" 2025 Apr 15 by Vim project: rework Make flavor detection (#17089)
" 2025 Oct 12 by Vim project: update makeDefine highlighting (#18403)
" 2025 Oct 25 by Vim project: update makeTargetinDefine highlighting (#18570)
" 2025 Dec 23 by Vim project: fix too greedy match (#18938)
" 2025 Dec 23 by Vim project: wrong highlight with paranthesis inside quotes (#18818)
" 2026 Apr 17 by Vim project: wrong highlight $ inside quotes (#19986)
+" 2026 Aug 05 by Vim project: highlight variables in non-empty target lists
" quit when a syntax file was already loaded
if exists("b:current_syntax")
syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1
syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2
-syn region makeTargetinDefine transparent matchgroup=makeTargetinDefine
- \ start="^[~A-Za-z0-9_./$(){}%-][A-Za-z0-9_./\t ${}()%-]*&\?:\?:\{1,2}[^:=]"rs=e-1
- \ end="[^\\]$"
- \ keepend
+syn match makeTargetinDefine "^[~A-Za-z0-9_./$(){}%-][A-Za-z0-9_./\t ${}()%-]*&\?:\?:\{1,2}\ze[^:=]"
+ \ contains=makeIdent,makeSpecTarget,makeComment
syn match makeTargetinDefine "^[~A-Za-z0-9_./$(){}%*@-][A-Za-z0-9_./\t $(){}%*@-]*&\?::\=\s*$"
\ contains=makeIdent,makeSpecTarget,makeComment
-syn region makeTarget transparent matchgroup=makeTarget
- \ start="^[~A-Za-z0-9_./$(){}%-][A-Za-z0-9_./\t ${}()%-]*&\?:\?:\{1,2}[^:=]"rs=e-1
+" Match prerequisites separately so identifiers can match inside target lists.
+syn region makePrerequisites contained transparent
+ \ start="."rs=e-1
\ end="[^\\]$"
\ keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment,makeDString
\ skipnl nextGroup=makeCommands
+syn match makeTarget "^[~A-Za-z0-9_./$(){}%-][A-Za-z0-9_./\t ${}()%-]*&\?:\?:\{1,2}\ze[^:=]"
+ \ contains=makeIdent,makeSpecTarget,makeComment
+ \ nextgroup=makePrerequisites skipwhite
syn match makeTarget "^[~A-Za-z0-9_./$(){}%*@-][A-Za-z0-9_./\t $(){}%*@-]*&\?::\=\s*$"
\ contains=makeIdent,makeSpecTarget,makeComment
\ skipnl nextgroup=makeCommands,makeCommandError
>#+0#0000e05#ffffff0| |c|o|m@1|e|n|t| +0#0000000&@65
@75
-|a+0#00e0e07&| |=+0#0000000&| |b| @69
-|$+0#00e0e07&|(|a|)| |=+0#0000000&| |1| @66
+|a+0#0000001#ffff4012| |=+0#0000000#ffffff0| |b| @69
+|$+0#0000001#ffff4012|(|a|)| |=+0#0000000#ffffff0| |1| @66
@75
-|$+0#00e0e07&|(|a|)|:@1| +0#0000000&@68
+|$+0#0000001#ffff4012|(|a|)|:+0#00e0e07#ffffff0@1| +0#0000000&@68
| +0#e000e06&@7|@|e+0#e000002&|c|h|o| |d|o|u|b|l|e|-|c|o|l|o|n| |r|u|l|e| +0#0000000&@43
@75
-|$+0#00e0e07&|(|a|)| |++0#0000000&|=| |o|u|t|p|u|t| @60
-@75
+|$+0#0000001#ffff4012|(|a|)|:+0#00e0e07#ffffff0| +0#0000000&|p|r|e|r|e|q|u|i|s|i|t|e| @56
+|$+0#0000001#ffff4012|(|a|)| |++0#0000000#ffffff0|=| |o|u|t|p|u|t| @60
|d+0#e000e06&|e|f|i|n|e| |s|a|y| +0#0000000&@64
-| +0#e000e06&@7|e|c|h|o| |$+0#00e0e07&|1| +0#0000000&@59
+|$+0#0000001#ffff4012|(|a|)|:+0#00e0e07#ffffff0| +0#e000e06&|p|r|e|r|e|q|u|i|s|i|t|e| +0#0000000&@56
+| +0#e000e06&@7|e|c|h|o| |$+0#0000001#ffff4012|1| +0#0000000#ffffff0@59
|e+0#e000e06&|n|d|e|f| +0#0000000&@69
-@75
|d+0#00e0e07&|e|f|a|u|l|t|:| +0#0000000&@66
-| +0#e000002&@7|$+0#00e0e07&|(|c+0#af5f00255&|a|l@1| +0#00e0e07&|s|a|y|,|"+0#e000002&|H|e|l@1|o| |(|w|o|r|l|d|)|!|"|)+0#00e0e07&| +0#0000000&@38
+| +0#e000002&@7|$+0#0000001#ffff4012|(|c+0#af5f00255#ffffff0|a|l@1| +0#0000001#ffff4012|s|a|y|,|"+0#e000002#ffffff0|H|e|l@1|o| |(|w|o|r|l|d|)|!|"|)+0#0000001#ffff4012| +0#0000000#ffffff0@38
@75
|f+0#00e0e07&|o@1|:| +0#0000000&@70
-| +0#e000002&@7|e|c|h|o| |"|b|a|r|$+0#00e0e07&@1|"+0#e000002&| |b|a|z| +0#0000000&@50
+| +0#e000002&@7|e|c|h|o| |"|b|a|r|$+0#0000001#ffff4012@1|"+0#e000002#ffffff0| |b|a|z| +0#0000000&@50
@57|1|,|1| @10|A|l@1|