Embora não tenham um plug-in para você, há algumas respostas úteis em essa pergunta do stackoverflow .
Em particular, você pode tentar definir set foldnestmax=2
. Isso fará dobras indesejadas em funções de nível superior, mas de outra forma satisfará suas necessidades. foldnestmax
diz: não dobre nada mais profundo que x (em oposição ao foldlevel, que diz "dobra tudo mais profundo que x"). Se você quer que o dobramento seja inteligente o bastante para encontrar funções onde quer que ele esteja, você precisará definir foldexpr
.
Se você usar o foldexpr, sua melhor aposta seria jogar com o dobramento básico no vimscript até pegar o jeito e depois mexer no código de um dos plug-ins que você forneceu. Certifique-se de set foldcolumn=1
(ou maior) para ver as dobras que você está definindo. Acredito que você basicamente incrementará sua dobra apenas se vir class
ou def
, mas poderá precisar de v:foldstart
e v:foldlevel
para determinar quando as dobras terminarão.
Além disso, tente usar zO
para abrir recursivamente uma dobra (assim, se você desdobrar uma função de nível superior, tudo nela será desdobrado).