summaryrefslogtreecommitdiffstats
path: root/indent/caddyfile.vim
diff options
context:
space:
mode:
Diffstat (limited to 'indent/caddyfile.vim')
-rw-r--r--indent/caddyfile.vim46
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