os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

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:
Mvimfiles/indent/omiltem.vim | 36++++++++++++++++++++++++++++++++++--
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