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

56476Re: Why is there no :foldupdate?

Expand Messages
  • Christian Brabandt
    Mar 31, 2010
      (fullquote, because copying vim_dev)

      On Mi, 31 Mär 2010, Christian Brabandt wrote:

      > Hi,
      > sometimes I am using fold expressions to simply hide away unwanted
      > parts. Usually this boils down to
      > :set fdm=expr fde=getline(v:lnum)!~getreg('/',1)
      > While this works fine, it is only limited to whatever was in register @/
      > when this setting was entered. Now this leaves an interesting question:
      > When are 'foldexpr' reevaluated (are they at all)? Reading :h fold.txt
      > does not mentioned when the fold expressions are reevaluated and folds
      > are updated (or I might have missed it).
      > Now the obvious cure to this is to reenter the foldexpression. So if I
      > am searching for a different term, I need to enter
      > :set fde=getline(v:lnum)!~getreg('/',1)
      > and the folds will be updated.
      > Of course, I could define my own :Foldupdate like this:
      > :com! Foldupdate :exe "set fde=".&fde
      > But this looks so fundamental, that I am wondering, whether I am the
      > only one who is missing :foldupdate. Does anybody else think so? Or am I
      > missing something obvious?
      > PS: Looking at the source, it does not seem too hard, to define an extra
      > :foldupdate command. Does that sound like a reasonable idea? I could
      > prepare a patch for this, if there is interest.
      > regards,
      > Christian
      > (Actually, I'd really like an RegisterChanged autocommand event, which
      > could trigger an :foldupdate)

      Ok, here is a patch, that implements :foldupdate as ex command and zU as
      normal mode command.

      Here is the testcase:
      go to the vim-Src directory and execute the attached vim-script:

      chrisbra t41:~/vim/src [1296]% ./vim -u NONE -N -S foldupdate.vim eval.c

      Note, how the folding will be wrong, after the second search command
      (and I have found no way to refresh the folding. zx and zX do not work,
      though its description led me believe it could have. Well actually I
      found one way: filtering the whole buffer through cat will also update
      the folding)

      When recompiling vim with the patch, the folding will be updated, when
      :foldupdate is called.


      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php

      To unsubscribe, reply using "remove me" as the subject.
    • Show all 5 messages in this topic