From: Christian Brabandt Date: Sun, 28 Dec 2025 13:57:33 +0000 (+0000) Subject: runtime(rust): clean-up indent script, handle opening empty line correctly X-Git-Tag: v9.1.2029~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e426245bb38fbafb504d8bf9f327a28c2785897c;p=thirdparty%2Fvim.git runtime(rust): clean-up indent script, handle opening empty line correctly fixes: #18974 Signed-off-by: Christian Brabandt --- diff --git a/runtime/indent/rust.vim b/runtime/indent/rust.vim index a96650d419..2a660bcc76 100644 --- a/runtime/indent/rust.vim +++ b/runtime/indent/rust.vim @@ -2,7 +2,8 @@ " Language: Rust " Author: Chris Morgan " Last Change: 2023-09-11 -" 2024 Jul 04 by Vim Project: use shiftwidth() instead of hard-coding shifted values (#15138) +" 2024 Jul 04 by Vim Project: use shiftwidth() instead of hard-coding shifted values #15138 +" 2025 Dec 28 by Vim Project: clean up, handle opening empty line correctly #18974 " For bugs, patches and license go to https://github.com/rust-lang/rust.vim " Note: upstream seems umaintained: https://github.com/rust-lang/rust.vim/issues/502 @@ -86,16 +87,6 @@ function! s:is_string_comment(lnum, col) endif endfunction -if exists('*shiftwidth') - function! s:shiftwidth() - return shiftwidth() - endfunc -else - function! s:shiftwidth() - return &shiftwidth - endfunc -endif - function GetRustIndent(lnum) " Starting assumption: cindent (called at the end) will do it right " normally. We just want to fix up a few cases. @@ -240,44 +231,10 @@ function GetRustIndent(lnum) return indent(prevlinenum) endif - if !has("patch-7.4.355") - " cindent before 7.4.355 doesn't do the module scope well at all; e.g.:: - " - " static FOO : &'static [bool] = [ - " true, - " false, - " false, - " true, - " ]; - " - " uh oh, next statement is indented further! - - " Note that this does *not* apply the line continuation pattern properly; - " that's too hard to do correctly for my liking at present, so I'll just - " start with these two main cases (square brackets and not returning to - " column zero) - - call cursor(a:lnum, 1) - if searchpair('{\|(', '', '}\|)', 'nbW', - \ 's:is_string_comment(line("."), col("."))') == 0 - if searchpair('\[', '', '\]', 'nbW', - \ 's:is_string_comment(line("."), col("."))') == 0 - " Global scope, should be zero - return 0 - else - " At the module scope, inside square brackets only - "if getline(a:lnum)[0] == ']' || search('\[', '', '\]', 'nW') == a:lnum - if line =~# "^\\s*]" - " It's the closing line, dedent it - return 0 - else - return shiftwidth() - endif - endif - endif - endif - " Fall back on cindent, which does it mostly right + if empty(trim(line)) + return cindent(prevlinenum) + endif return cindent(a:lnum) endfunction