neovim

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

commit 6b006a03c4053c09e4aa00d8cd4b6e2e63a7ae90
parent dbddd5989acf55a30d3ff8fa4243bf2560238ca3
Author: zeertzjq <zeertzjq@outlook.com>
Date:   Tue, 14 Oct 2025 10:43:06 +0800

vim-patch:47949b4: runtime(rst): Fix highlights nested in directive body

The leading two dots of a RST directive gets matched by
rstExplicitMarkup group first, and then the directive name and directive
body will be matched by the groups contained in rstDirectives cluster in
order.

The rstExDirective group in rstDiretives matches any RST directives
other than footnote, citation and hyperlink target, therefore admonition
and code block will be matched by rstExDirective. This fix has
rstExDirective contain rstExplicitMarkup so as to enable recursive RST
directives match.

The interpreted texts enclosed in quotes are not highlighted within a
RST directive body, because the rstCruft cluster contains a non-existing
rstInterpretedText group.It should be renamed to
rstInterpretedTextOrHyperlinkReference which is defined in a
DefineInlineMarkup function call.

related: vim/vim#18566

https://github.com/vim/vim/commit/47949b4b46965fdabbbe84cbe14027890d4ed3b8

Co-authored-by: Minjie Xu <madjxatw@gmail.com>

Diffstat:
Mruntime/syntax/rst.vim | 7++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/runtime/syntax/rst.vim b/runtime/syntax/rst.vim @@ -17,8 +17,9 @@ syn case ignore syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/ syn cluster rstCruft contains=rstEmphasis,rstStrongEmphasis, - \ rstInterpretedText,rstInlineLiteral,rstSubstitutionReference, - \ rstInlineInternalTargets,rstFootnoteReference,rstHyperlinkReference + \ rstInterpretedTextOrHyperlinkReference,rstInlineLiteral, + \ rstSubstitutionReference,rstInlineInternalTargets,rstFootnoteReference, + \ rstHyperlinkReference syn region rstLiteralBlock matchgroup=rstDelimiter \ start='\(^\z(\s*\).*\)\@<=::\n\s*\n' skip='^\s*$' end='^\(\z1\s\+\)\@!' @@ -87,7 +88,7 @@ syn region rstHyperlinkTarget matchgroup=rstDirective execute 'syn region rstExDirective contained matchgroup=rstDirective' . \ ' start=+' . s:ReferenceName . '::\_s+' . \ ' skip=+^$+' . - \ ' end=+^\s\@!+ contains=@rstCruft,rstLiteralBlock' + \ ' end=+^\s\@!+ contains=@rstCruft,rstLiteralBlock,rstExplicitMarkup' execute 'syn match rstSubstitutionDefinition contained' . \ ' /|.*|\_s\+/ nextgroup=@rstDirectives'