diff --git a/runtime/syntax/rst.vim b/runtime/syntax/rst.vim index bb9a0b3a46..9584947df5 100644 --- a/runtime/syntax/rst.vim +++ b/runtime/syntax/rst.vim @@ -2,8 +2,9 @@ " Language: reStructuredText documentation format " Maintainer: Marshall Ward " Previous Maintainer: Nikolai Weibull +" Reference: https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html " Website: https://github.com/marshallward/vim-restructuredtext -" Latest Revision: 2020-03-31 +" Latest Revision: 2025-10-13 if exists("b:current_syntax") finish @@ -12,7 +13,8 @@ endif let s:cpo_save = &cpo set cpo&vim -syn case ignore +" reStructuredText is case-insensitive +syntax case ignore syn match rstTransition /^[=`:.'"~^_*+#-]\{4,}\s*$/ @@ -97,6 +99,9 @@ execute 'syn region rstExDirective contained matchgroup=rstDirective' . execute 'syn match rstSubstitutionDefinition contained' . \ ' /|.*|\_s\+/ nextgroup=@rstDirectives' + +"" Inline Markup "" + function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right) " Only escape the first char of a multichar delimiter (e.g. \* inside **) if a:start[0] == '\' @@ -190,6 +195,8 @@ execute 'syn match rstHyperlinkReference' . syn match rstStandaloneHyperlink contains=@NoSpell \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]" +" `code` is the standard reST directive for source code. +" `code-block` and `sourcecode` are nearly identical directives in Sphinx. syn region rstCodeBlock contained matchgroup=rstDirective \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s*\(\S*\)\?\s*\n\%(\s*:.*:\s*.*\s*\n\)*\n\ze\z(\s\+\)+ \ skip=+^$+