Re: Why is there no :foldupdate?

27 views
Skip to first unread message

Christian Brabandt

unread,
Mar 31, 2010, 5:27:31 PM3/31/10
to vim...@googlegroups.com, vim...@googlegroups.com
(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.

regards,
Christian

foldupdate.vim
patch_fold1

Bram Moolenaar

unread,
Apr 1, 2010, 9:45:25 AM4/1/10
to Christian Brabandt, vim...@googlegroups.com, vim...@googlegroups.com

Christian Brabandt wrote:

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 ///

Christian Brabandt

unread,
Apr 1, 2010, 3:49:04 PM4/1/10
to vim...@googlegroups.com, vim...@googlegroups.com
Hi Bram!

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

0001-Added-foldupdate-and-normal-zU.patch

Tony Mechelynck

unread,
Apr 2, 2010, 6:58:25 PM4/2/10
to vim...@googlegroups.com, vim...@googlegroups.com, Christian Brabandt, Bram Moolenaar
On 31/03/10 23:27, Christian Brabandt wrote:
> (fullquote, because copying vim_dev)
>

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

Christian Brabandt

unread,
Apr 3, 2010, 7:27:17 AM4/3/10
to vim...@googlegroups.com, vim...@googlegroups.com
Hi Tony!

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

Reply all
Reply to author
Forward
0 new messages