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.

Raspunde prin e-mail lui