Commit: runtime(rst): Correctly end nested comments

2 views
Skip to first unread message

Christian Brabandt

unread,
Oct 13, 2025, 2:45:20 PMOct 13
to vim...@googlegroups.com
runtime(rst): Correctly end nested comments

Commit: https://github.com/vim/vim/commit/4e9f16dd1ef8b48d4a37fde479adde1758796871
Author: Antony Lee <anntz...@gmail.com>
Date: Mon Oct 13 18:28:58 2025 +0000

runtime(rst): Correctly end nested comments

Previously, a comment in a directive block would incorrectly mark
all subsequent lines in the directive block as comment, because the
syn-region did not check the leading indent.

related: #18566

Signed-off-by: Antony Lee <anntz...@gmail.com>
Signed-off-by: Marshall Ward <marsha...@gmail.com>
Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/runtime/syntax/rst.vim b/runtime/syntax/rst.vim
index 4b9379f5e..8094d8771 100644
--- a/runtime/syntax/rst.vim
+++ b/runtime/syntax/rst.vim
@@ -52,7 +52,8 @@ syn cluster rstDirectives contains=rstFootnote,rstCitation,
\ rstHyperlinkTarget,rstExDirective

syn match rstExplicitMarkup '^\s*\.\.\_s'
- \ nextgroup=@rstDirectives,rstComment,rstSubstitutionDefinition
+ \ nextgroup=@rstDirectives,rstSubstitutionDefinition
+ \ contains=rstComment

" "Simple reference names are single words consisting of alphanumerics plus
" isolated (no two adjacent) internal hyphens, underscores, periods, colons
@@ -61,10 +62,10 @@ let s:ReferenceName = '[[:alnum:]]\%([-_.:+]\?[[:alnum:]]\+\)*'

syn keyword rstTodo contained FIXME TODO XXX NOTE

-execute 'syn region rstComment contained' .
- \ ' start=/.*/'
- \ ' skip=+^$+' .
- \ ' end=/^\s\@!/ contains=rstTodo'
+syn region rstComment
+ \ start=' ^\z(\s*)\.\.(\_s+[\[|_]|\_s+.*::)@!' skip=+^$+ end=/^\(\z1 \)\@!/
+ \ contains=@Spell,rstTodo
+

execute 'syn region rstFootnote contained matchgroup=rstDirective' .
\ ' start=+\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]\_s+' .
Reply all
Reply to author
Forward
0 new messages