neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit 446161ae08b50c6a174ba7f82ffa14aefa1817f4
parent 83c7193c119ffe5cef8a86ec290103921c15dc01
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Mon, 13 Oct 2025 08:57:59 +0800

vim-patch:2a33b49: runtime(make): syntax highlighting update for makeDefine (#36158)

Previously contents in makeDefine are nearly highlighted as Define, so
comments and targets shares the same color as Define, making it hard to
distinguish if someone write large block of targets-recipes as defined
function.

Such scenario is common in building data analysis pipeline. Recipes are
reused and targets may have multiple variables, and a single % implicit
rule is not enough.

closes: vim/vim#18403

https://github.com/vim/vim/commit/2a33b499a3d7f46dc307234847a6562cef6cf1d8

Co-authored-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
Diffstat:
Mruntime/syntax/make.vim | 30++++++++++++++++++++++--------
1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/runtime/syntax/make.vim b/runtime/syntax/make.vim @@ -5,6 +5,7 @@ " URL: https://github.com/vim/vim/blob/master/runtime/syntax/make.vim " Last Change: 2022 Nov 06 " 2025 Apr 15 by Vim project: rework Make flavor detection (#17089) +" 2025 Oct 12 by Vim project: update makeDefine highlighting (#18403) " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -23,7 +24,7 @@ syn match makeNextLine "\\\n\s*" " catch unmatched define/endef keywords. endef only matches it is by itself on a line, possibly followed by a commend syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$" - \ contains=makeStatement,makeIdent,makePreCondit,makeDefine + \ contains=makeStatement,makeIdent,makePreCondit,makeDefine,makeComment,makeTargetinDefine if get(b:, 'make_flavor', s:make_flavor) == 'microsoft' " Microsoft Makefile specials @@ -33,20 +34,26 @@ if get(b:, 'make_flavor', s:make_flavor) == 'microsoft' syn case match endif -" identifiers +" identifiers; treat $$X like $X inside makeDefine +syn match makeIdent "\$\$\w*" +syn match makeIdent "\$\$\$\$\w*" containedin=makeDefine +syn match makeIdent "\$[^({]" +syn match makeIdent "\$\$[^({]" containedin=makeDefine +syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2 +syn match makeIdent "^ *[^:#= \t]*\s*::="me=e-3 +syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1 +syn match makeIdent "%" if get(b:, 'make_flavor', s:make_flavor) == 'microsoft' syn region makeIdent start="\$(" end=")" contains=makeStatement,makeIdent syn region makeIdent start="\${" end="}" contains=makeStatement,makeIdent + syn region makeIdent start="\$\$(" end=")" containedin=makeDefine contains=makeStatement,makeIdent + syn region makeIdent start="\$\${" end="}" containedin=makeDefine contains=makeStatement,makeIdent else syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent + syn region makeIdent start="\$\$(" skip="\\)\|\\\\" end=")" containedin=makeDefine contains=makeStatement,makeIdent + syn region makeIdent start="\$\${" skip="\\}\|\\\\" end="}" containedin=makeDefine contains=makeStatement,makeIdent endif -syn match makeIdent "\$\$\w*" -syn match makeIdent "\$[^({]" -syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2 -syn match makeIdent "^ *[^:#= \t]*\s*::="me=e-3 -syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1 -syn match makeIdent "%" " Makefile.in variables syn match makeConfig "@[A-Za-z0-9_]\+@" @@ -55,6 +62,12 @@ syn match makeConfig "@[A-Za-z0-9_]\+@" 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="[^\\]$" +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 \ end="[^\\]$" @@ -155,6 +168,7 @@ hi def link makeCommands Number endif hi def link makeImplicit Function hi def link makeTarget Function +hi def link makeTargetinDefine Function hi def link makeInclude Include hi def link makePreCondit PreCondit hi def link makeStatement Statement