On Mon, Jul 24, 2006 at 12:30:07PM -0500, Thore B. Karlsen wrote: > I use foldmethod=expr with the following foldexpr: > > set foldexpr=GetFoldLevel(v:lnum) > > function! GetFoldLevel(line) > let line_text = getline(a:line) > if (line_text =~ '\%({.*}\)\|\%(}.*{\)') > return '=' > elseif (line_text =~ '{') > return "a1" > elseif (line_text =~ '}') > return "s1" > endif > return '=' > endfunction >
I haven't read the above too carefully: But if all you want to do is fold your code based on {...} blocks, then use Vim 7 and set fdm=syntax (for C / C++ files). Incidentally, fdm=syntax is also slow (though much much faster than fdm=expr). I could (grudgingly) live with a short delay when first loading the file. The thing that bothers me is that when I switch between buffers, Vim takes it's own sweet time to get the syntax based folding right. So I only enable syntax folding for files that have less than 3000 lines. Once my clever spies steal Benji Fisher's computer, I'm going to up this limit to 18000. GI -- You're not drunk if you can lie on the floor without holding on.