mirror of
https://github.com/vim/vim.git
synced 2025-10-17 07:44:28 -04:00
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 <marshall.ward@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
5ffb23c967
commit
64c8105867
@@ -4,13 +4,18 @@
|
||||
" Maintainer: Marshall Ward <marshall.ward@gmail.com>
|
||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||
" 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
|
||||
|
Reference in New Issue
Block a user