52 lines
1.1 KiB
VimL
52 lines
1.1 KiB
VimL
" Only load this indent file when no other was loaded.
|
|
if exists('b:did_indent')
|
|
finish
|
|
endif
|
|
|
|
let b:did_indent = 1
|
|
|
|
if &l:indentexpr == ''
|
|
if &l:cindent
|
|
let &l:indentexpr = 'cindent(v:lnum)'
|
|
else
|
|
let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
|
|
endif
|
|
endif
|
|
let b:html_indentexpr = &l:indentexpr
|
|
|
|
runtime! indent/html.vim
|
|
|
|
setlocal indentexpr=GetHugoIndent()
|
|
setlocal indentkeys+==else,=end,=if,=range,=with,=define,=block
|
|
|
|
" Only define the function once.
|
|
if exists('*GetHugoIndent')
|
|
finish
|
|
endif
|
|
|
|
function! GetHugoIndent()
|
|
if exists('*HtmlIndent')
|
|
let l:ind = HtmlIndent()
|
|
else
|
|
let l:ind = HtmlIndentGet(v:lnum)
|
|
endif
|
|
|
|
if exists('*shiftwidth')
|
|
let l:sw = shiftwidth()
|
|
else
|
|
let l:sw = &sw
|
|
endif
|
|
|
|
let l:last_line = getline(v:lnum-1)
|
|
if l:last_line =~# '^\s*{{-\=\s*\%(if\|else\|range\|with\|define\|block\).*}}' && l:last_line !~# '{{-\=\s*end\s*-\=}}'
|
|
let l:ind += l:sw
|
|
endif
|
|
|
|
let l:current_line = getline(v:lnum)
|
|
if l:current_line =~# '^\s*{{-\=\s*\%(else\|end\).*}}'
|
|
let l:ind -= l:sw
|
|
endif
|
|
|
|
return l:ind
|
|
endfunction
|