commit 98b67b03e9f33583654a7a7d47615fca36567904
parent 553695a785096195f1be2d32cc68dabbd0159e2c
Author: erai <erai@omiltem.net>
Date: Mon, 20 Jan 2025 18:37:05 +0000
Better indentation only on braces and parenthesis
Diffstat:
1 file changed, 34 insertions(+), 2 deletions(-)
diff --git a/vimfiles/indent/omiltem.vim b/vimfiles/indent/omiltem.vim
@@ -3,6 +3,38 @@ if exists("b:did_indent")
endif
let b:did_indent = 1
-setlocal cindent
+setlocal autoindent
+setlocal indentexpr=OmiltemIndent(v:lnum)
+setlocal indentkeys+=0=},0=)
-let b:undo_indent = "setlocal cindent<"
+let b:undo_indent = "setlocal autoindent< indentexpr< indentkeys<"
+
+if exists('*OmiltemIndent')
+ finish
+endif
+
+function! OmiltemIndent(lnum)
+ let l:prevlnum = prevnonblank(a:lnum-1)
+ if l:prevlnum == 0
+ return 0
+ endif
+
+ " Strip comments
+ let l:prevl = substitute(getline(l:prevlnum), '//.*$', '', '')
+ let l:thisl = substitute(getline(a:lnum), '//.*$', '', '')
+
+ " Match the previous indentation
+ let l:ind = indent(l:prevlnum)
+
+ " Increase indentation after opening a block
+ if l:prevl =~ '[({]\s*$'
+ let l:ind += shiftwidth()
+ endif
+
+ " Decrease indentation when closing a block
+ if l:thisl =~ '^\s*[)}]'
+ let l:ind -= shiftwidth()
+ endif
+
+ return l:ind
+endfunction