diff options
Diffstat (limited to 'runtime/indent/kdl.vim')
-rw-r--r-- | runtime/indent/kdl.vim | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/runtime/indent/kdl.vim b/runtime/indent/kdl.vim new file mode 100644 index 0000000..b0a6bd9 --- /dev/null +++ b/runtime/indent/kdl.vim @@ -0,0 +1,30 @@ +" Vim indent file +" Language: KDL +" Author: Aram Drevekenin <aram@poor.dev> +" Maintainer: Yinzuo Jiang <jiangyinzuo@foxmail.com> +" Last Change: 2024-06-16 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=KdlIndent() +let b:undo_indent = "setlocal indentexpr<" + +function! KdlIndent(...) + let line = substitute(getline(v:lnum), '//.*$', '', '') + let previousNum = prevnonblank(v:lnum - 1) + let previous = substitute(getline(previousNum), '//.*$', '', '') + + let l:indent = indent(previousNum) + if previous =~ "{" && previous !~ "}" + let l:indent += shiftwidth() + endif + if line =~ "}" && line !~ "{" + let l:indent -= shiftwidth() + endif + return l:indent +endfunction +" vim: sw=2 sts=2 et |