3 " Maintainer: Giftpflanze <gifti@tools.wmflabs.org>
4 " Last Change: 2023-01-09
6 if exists("b:did_indent")
11 setlocal indentexpr=GetFactorIndent(v:lnum)
13 let b:undo_indent = 'setlocal indentexpr<'
15 if exists("*GetFactorIndent")
19 function! GetFactorIndent(lnum)
20 let cline = getline(a:lnum)
21 let pline = getline(a:lnum-1)
22 let pind = indent(a:lnum-1)
23 if pline =~ '^[^ ]*:' || pline =~ '[{[]\s*$'
24 let pind += shiftwidth()
26 if pline =~ '^\(ALIAS\|C\|CONSTANT\|DEFER\|EDITOR\|FORGET\|GENERIC#\?\|HELP\|\(\(SHUTDOWN\|STARTUP\)-\)\?HOOK\|IN\|INSTANCE\|MAIN\|MATH\|MIXIN\|PRIMITIVE\|QUALIFIED\(-WITH\)\?\|RENAME\|SINGLETON\|SLOT\|SYMBOL\|USE\|USING\):'
27 let pind -= shiftwidth()
29 if pline =~ ';\( \(inline\|recursive\|foldable\|flushable\)\)*$'
30 let pind -= shiftwidth()
32 if cline =~ '^\s*[\]}]'
33 let pind -= shiftwidth()