runtime(rst): Preserve indentation of directives
Commit:
https://github.com/vim/vim/commit/64c8105867ae6342b632246ac5430a59521e740d
Author: Marshall Ward <[email protected]>
Date: Mon Oct 13 18:37:59 2025 +0000
runtime(rst): Preserve indentation of directives
This patch preserves indentation in comments. It work by removing the
explicit 3-space indentation and replaces with with an expression which
uses the current value with a minimum of three spaces.
Discussed in the mailing list:
https://groups.google.com/g/vim_dev/c/rn8ZLDrCbYU
Thanks to Friedrich Romstedt for reporting and Christian Brabandt for
investigating the issue.
closes: #18566
Signed-off-by: Marshall Ward <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/runtime/indent/rst.vim b/runtime/indent/rst.vim
index e3c10865a..e10079213 100644
--- a/runtime/indent/rst.vim
+++ b/runtime/indent/rst.vim
@@ -4,13 +4,18 @@
" Maintainer: Marshall Ward <[email protected]>
" Previous Maintainer: Nikolai Weibull <[email protected]>
" Latest Revision: 2020-03-31
-" 2023 Aug 28 by Vim Project (undo_indent)
+" 2023 Aug 28 by Vim Project (undo_indent)
+" 2025 Oct 13 by Vim project: preserve indentation #18566
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
+" Save and modify cpoptions
+let s:save_cpo = &cpo
+set cpo&vim
+
setlocal indentexpr=GetRSTIndent()
setlocal indentkeys=!^F,o,O
setlocal nosmartindent
@@ -27,7 +32,8 @@ let s:note_pattern = '^\.\. '
function! s:get_paragraph_start()
let paragraph_mark_start = getpos("'{")[1]
- return getline(paragraph_mark_start) =~ '\S' ? paragraph_mark_start :
paragraph_mark_start + 1
+ return getline(paragraph_mark_start) =~
+ \ '\S' ? paragraph_mark_start : paragraph_mark_start + 1
endfunction
function GetRSTIndent()
@@ -42,7 +48,7 @@ function GetRSTIndent()
let psnum = s:get_paragraph_start()
if psnum != 0
if getline(psnum) =~ s:note_pattern
- let ind = 3
+ let ind = max([3, ind])
endif
endif
@@ -75,3 +81,7 @@ function GetRSTIndent()
return ind
endfunction
+
+" Restore 'cpoptions'
+let &cpo = s:save_cpo
+unlet s:save_cpo
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1v8NXp-00CgtD-2f%40256bit.org.