Commit: runtime(rst): Fix doctest block syntax

0 views
Skip to first unread message

Christian Brabandt

unread,
Oct 13, 2025, 2:45:17 PMOct 13
to vim...@googlegroups.com
runtime(rst): Fix doctest block syntax

Commit: https://github.com/vim/vim/commit/0940465866486db47baa1fe85ebefb6e6fe54612
Author: Kirk Roemer <91125534+k...@users.noreply.github.com>
Date: Mon Oct 13 18:24:09 2025 +0000

runtime(rst): Fix doctest block syntax

A doctest block usually spans multiple lines, e.g.

>>> print('this is a Doctest block')
this is a Doctest block

Remove ``oneline`` argument to syntax region as this requirement is not
met. Consequently, also remove ``display`` as the prerequisite (the
syntax region is on a single line) is no longer met.

----

Recognise '>>>' inside doctest blocks

Recognise subsequent '>>>' prompts in doctest blocks, e.g.

>>> print('this is a Doctest block')
this is a Doctest block
>>> print('this is a second Doctest block')
this is a second Doctest block
A doctest block usually spans multiple lines, e.g.

>>> print('this is a Doctest block')
this is a Doctest block

related: #18566

Signed-off-by: Kirk Roemer <91125534+k...@users.noreply.github.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 a90c90be2..c43bda589 100644
--- a/runtime/syntax/rst.vim
+++ b/runtime/syntax/rst.vim
@@ -28,8 +28,11 @@ syn region rstQuotedLiteralBlock matchgroup=rstDelimiter
\ start="::\_s*
\ze\z([!\"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]\)"
\ end='^\z1\@!' contains=@NoSpell

-syn region rstDoctestBlock oneline display matchgroup=rstDelimiter
+syn region rstDoctestBlock matchgroup=rstDoctestBlockPrompt
\ start='^>>>\s' end='^$'
+ \ contains=rstDoctestBlockPrompt
+
+syn match rstDoctestBlockPrompt contained '^>>>\s'

syn region rstTable transparent start='^
\s*+[-=+]\+' end='^$'
\ contains=rstTableLines,@rstCruft
@@ -256,6 +259,7 @@ hi def link rstTransition rstSections
hi def link rstLiteralBlock String
hi def link rstQuotedLiteralBlock String
hi def link rstDoctestBlock PreProc
+hi def link rstDoctestBlockPrompt rstDelimiter
hi def link rstTableLines rstDelimiter
hi def link rstSimpleTableLines rstTableLines
hi def link rstExplicitMarkup rstDirective
Reply all
Reply to author
Forward
0 new messages