Come posso scrivere un vim foldexpr che equivale a foldmethod = indent?


2

Come risultato di questa risposta qui , sto provando a scrivere un foldexprfor vim che equivale a foldmethod=indent(come punto di partenza per poi migliorarlo per riconoscere i miei marcatori personalizzati, vedere la domanda per maggiori dettagli ).

Ho provato questo:

set foldmethod=foldexpr
set foldexpr=indent(v:lnum)

Tuttavia, ciò non riesce in questo semplice esempio HTML:

<div id="a">
    <div id="b">
        <div id="c">
            <div id="d">
            </div>
        </div>

        <div id="e">
        </div>
    </div>
</div>

Se posiziono la chiave sulla <div id="c">linea e premo zc, la piega funziona come previsto e piega solo quel div. Se riapro, posiziono la chiave sulla <div id="b">linea e premo zc, la piega fallisce perché <div id="e">non è piegata.

Se passo a foldmethod=indent, questo non succede; la seconda piega viene eseguita correttamente. Come posso risolvere il mio foldexprper farlo funzionare come foldmethod=indent?


Sei riuscito a far lavorare più foldmethods (marker e indent) usando questo approccio?
azzurrato il

@blueyed, temo di no. Per il momento ho sospeso questo progetto. Sarei interessato a sapere se hai successo.
Andrew Ferrier,

Risposte:


3

Le righe vuote dovrebbero mantenere il livello di piegatura della riga precedente. Prova questo:

:set foldmethod=expr
:set foldexpr=empty(getline(v:lnum))?'=':indent(v:lnum)/4
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.