commit dddb125b0bead80945e5952128063dadeae00453
parent 8e80e544784e1226f744e1b03faa0aeab0d5b681
Author: zeertzjq <zeertzjq@outlook.com>
Date: Wed, 31 Dec 2025 18:53:06 +0800
vim-patch:5c2b594: runtime(rust): Update indentation after nested array literal (#37177)
fixes: vim/vim#18974
closes: vim/vim#19042
https://github.com/vim/vim/commit/5c2b594d0e86e4484cc92bd415aedbef5749bd9e
Co-authored-by: Brian Carbone <brian@briancarbone.com>
Diffstat:
1 file changed, 17 insertions(+), 0 deletions(-)
diff --git a/runtime/indent/rust.vim b/runtime/indent/rust.vim
@@ -4,6 +4,7 @@
" Last Change: 2023-09-11
" 2024 Jul 04 by Vim Project: use shiftwidth() instead of hard-coding shifted values #15138
" 2025 Dec 29 by Vim Project: clean up
+" 2025 Dec 31 by Vim Project: correcly indent after nested array literal #19042
" 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
@@ -195,6 +196,22 @@ function GetRustIndent(lnum)
endif
endif
+ " Prevent cindent from becoming confused when pairing square brackets, as
+ " in
+ "
+ " let arr = [[u8; 4]; 2] = [
+ " [0; 4],
+ " [1, 3, 5, 9],
+ " ];
+ " | ← indentation placed here
+ "
+ " for which it calculates too much indentation in the line following the
+ " close of the array.
+ if prevline =~# '^\s*\]' && l:last_prevline_character ==# ';'
+ \ && line !~# '^\s*}'
+ return indent(prevlinenum)
+ endif
+
if l:last_prevline_character ==# ","
\ && s:get_line_trimmed(a:lnum) !~# '^\s*[\[\]{})]'
\ && prevline !~# '^\s*fn\s'