Linhas vazias devem manter o nível de dobra da linha anterior. Tente isto:
:set foldmethod=expr
:set foldexpr=empty(getline(v:lnum))?'=':indent(v:lnum)/4
Como resultado de esta resposta aqui , estou tentando escrever um foldexpr
para o vim que é equivalente para foldmethod=indent
(como ponto de partida para aprimorá-lo para reconhecer meus marcadores personalizados, veja a pergunta para mais detalhes ).
Eu tentei isso:
set foldmethod=foldexpr
set foldexpr=indent(v:lnum)
No entanto, isso falha neste exemplo HTML simples:
<div id="a">
<div id="b">
<div id="c">
<div id="d">
</div>
</div>
<div id="e">
</div>
</div>
</div>
Se eu colocar minha chave na linha <div id="c">
e atingir zc
, a dobra funcionará como esperado e dobrará apenas essa div. Se eu reabrir, coloque minha chave na linha <div id="b">
e acesse zc
, a dobra falhará se <div id="e">
não estiver dobrada.
Se eu mudar para foldmethod=indent
, isso não acontece; a segunda dobra é executada corretamente. Como posso corrigir meu foldexpr
para que ele se comporte como foldmethod=indent
?
Tags vim