Welcome to the Power Users community on Codidact!
Power Users is a Q&A site for questions about the usage of computer software and hardware. We are still a small site and would like to grow, so please consider joining our community. We are looking forward to your questions and answers; they are the building blocks of a repository of knowledge we are building together.
Combining manual and automatic folding in Vim
I set up some custom logic in my ~/.vimrc to detect certain things that I want automatically folded in my Python code:
au FileType python setlocal foldmethod=expr
au FileType python setlocal foldexpr=Custom()
function Custom()
" assorted custom folding logic...
endfunction
In order for the folding logic to be applied when the file is opened, the foldmethod has to be set to expr. But this also means that I cannot use manual folding commands like zf until I first issue :set foldmethod=manual.
I don't understand why it works like this. After all, the custom folding logic is only applied at startup; if for example I add some text that would have been folded by this rule, a fold is not automatically created, and I cannot even :call Custom() which appears to now not be in scope (and even if it could be called, I presumably would have to select the entire file, and even then it would presumably just compute the fold-level codes without actually folding anything).
Is there some way I can set things up so that foldmethod is automatically reset to manual after the initial folding is done? (Putting au FileType python setlocal foldmethod=expr at the end of the config file effectively just disables the custom folding.)
Is there some simple way to manually request re-folding according to the Custom() logic?

0 comment threads