dotfiles/.vim/pack/plugins/start/vim-hugo/indent/htmlhugo.vim
2024-12-16 19:13:26 +01:00

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