diff options
Diffstat (limited to 'indent/caddyfile.vim')
-rw-r--r-- | indent/caddyfile.vim | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/indent/caddyfile.vim b/indent/caddyfile.vim new file mode 100644 index 00000000..2f38c0db --- /dev/null +++ b/indent/caddyfile.vim @@ -0,0 +1,46 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'caddyfile') == -1 + +if exists('b:did_indent') + finish +endif +let b:did_indent = 1 + +setlocal nolisp +setlocal autoindent +setlocal indentexpr=GetCaddyfileIndent(v:lnum) +setlocal indentkeys+=<:>,0=},0=) +" setlocal cindent + +if exists('*shiftwidth') + func s:sw() + return shiftwidth() + endfunc +else + func s:sw() + return &sw + endfunc +endif + +function! GetCaddyfileIndent(lnum) + let prevlnum = prevnonblank(a:lnum-1) + if prevlnum == 0 + return 0 + endif + + let thisl = substitute(getline(a:lnum), '#.*$', '', '') + let prevl = substitute(getline(prevlnum), '#.*$', '', '') + + let ind = indent(prevlnum) + + if prevl =~ '{\s*$' + let ind += s:sw() + endif + + if thisl =~ '^\s*}\s*$' + let ind -= s:sw() + endif + + return ind +endfunction + +endif |