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.
regards,
Christian
Thanks! Feedback welcome.
One remark: in the help, add a bit more information about when this would
be needed, why the folds are not updated automatically.
--
BEDEVERE: Stand by for attack!!
[CUT TO enormous army forming up. Trebuchets, rows of PIKEMEN, siege
towers, pennants flying, shouts of "Stand by for attack!" Traditional
army build-up shots. The shouts echo across the ranks of the army.
We see various groups reacting, and stirring themselves in readiness.]
ARTHUR: Who are they?
BEDEVERE: Oh, just some friends!
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ download, build and distribute -- http://www.A-A-P.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
On Do, 01 Apr 2010, Bram Moolenaar wrote:
> One remark: in the help, add a bit more information about when this would
> be needed, why the folds are not updated automatically.
Attached is an updated patch. Is this better?
regards,
Christian
Doesn't this patch duplicate the already existing zx command?
If it does, and you can't remember it, I suggest the following ;-)
:command -nargs=0 -bar Foldupdate normal zx
Best regards,
Tony.
--
Any clod can have the facts, but having an opinion is an art.
-- Charles McCabe
On Sa, 03 Apr 2010, Tony Mechelynck wrote:
> On 31/03/10 23:27, Christian Brabandt wrote:
>> 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)
> Doesn't this patch duplicate the already existing zx command?
Please read again, what I already wrote ;)
Should zx or zX maybe be changed to update the folds?
regards,
Christian