Loading ...
Sorry, an error occurred while loading the content.

Re: foldmethod=expr very slow

Expand Messages
  • Peter Hodge
    Hi Thore, You can probably get away with foldmethod=expr in large files by de-activating it in Insert mode. I.e., add this to your after/ftplugin/php.vim:
    Message 1 of 13 , Jul 26, 2006
    • 0 Attachment
      Hi Thore,

      You can probably get away with foldmethod=expr in large files by de-activating
      it in Insert mode. I.e., add this to your after/ftplugin/php.vim:

      augroup FastFold
      autocmd!
      autocmd InsertEnter * if &ft == 'php' | setlocal foldmethod=manual | endif
      autocmd Insertleave * if &ft == 'php' | setlocal foldmethod=expr | endif
      augroup end

      I tried it out and it actually seems to work. Folds are re-evaluated when you
      are finished inserting.

      HTH,
      Peter



      --- "Thore B. Karlsen" <sid@...> wrote:

      > On Mon, 24 Jul 2006 23:48:12 -0500, Thore B. Karlsen <sid@...>
      > wrote:
      >
      > >>Hi Thore,
      > >>
      > >>I've never tried folding like this before, and unfortunately I don't have
      > time
      > >>to try out this 'optimized' version, but it may work faster for you (I've
      > just
      > >>replaced the regex matches with stridx and rearranged the code flow):
      > >>
      > >> set foldexpr=GetFoldLevel()
      > >>
      > >> function! GetFoldLevel()
      > >> let line_text = getline(v:lnum)
      > >>
      > >> let left_idx = (stridx(line_text, '{') >= 0)
      > >> let right_idx = (stridx(line_text, '}') >= 0)
      > >>
      > >> if left_idx
      > >> if ! right_idx
      > >> return 'a1'
      > >> endif
      > >> elseif right_idx
      > >> return 's1'
      > >> endif
      > >>
      > >> return '='
      > >> endfunction
      >
      > >Thanks! I did a quick test, and that does appear to speed it up. One
      > >of the files that was giving me problems before is now fast enough to
      > >work in. There's still a slight latency when I type, but it's much
      > >better. I'll do some more testing to see how it works in other files,
      > >but this looks promising!
      >
      > I spoke too soon. I tested it on another file that is 2500 lines long,
      > and it is still unbearably slow. It gets worse towards the end of the
      > file, where it can still take seconds for characters to show up when I
      > type them. I think I'll have to fire up vim in a profiler to see what
      > is causing this slowness, because if this system can compress dozens
      > of channels of video in realtime without breaking a sweat it seems
      > strange that inserting a character in a smallish text file would be a
      > problem.
      >
      > --
      > Be seeing you.
      >
      >


      Send instant messages to your online friends http://au.messenger.yahoo.com
    Your message has been successfully submitted and would be delivered to recipients shortly.