Wednesday, January 9, 2013

Re: Inconsistent fold opening behaviour after jump to mark within that fold

Hi Wiktor!

On Mi, 09 Jan 2013, Wiktor Ruben wrote:

> Hello Vimmers,
>
> Let's create sample fold:
>
> vim -u NONE -N
>
> :set foldmethod=marker
> i
> {{{1<CR>
> foo bar zaz<CR>
> foo bar zaz<Esc>bmm0za
>
> OK, now we have mark 'm' set at the beginning of second 'zaz' within
> closed fold and cursor placed at the beginning of the last line. The
> problem is: when we jump to the mark with '`m' our fold stays closed.
>
> I guess that fold isn't opened because cursor is already at mark line
> (but in different column). I find this bahaviour annoying e.g. opening
> file edited a while ago and executing '`^' or '`.' makes me confused
> because I have to additionally execute 'zv' to get where I want.
>
> There is no need for 'zv' after jump from line different from mark
> line. Is there a way to force Vim to open fold even if cursor is
> already at destination line?

Bram,
this patch fixes it. The problem is, in nv_gomark() we only checked,
whether the line position changed, and since it didn't change, the fold
isn't opened.

diff --git a/src/normal.c b/src/normal.c
--- a/src/normal.c
+++ b/src/normal.c
@@ -7523,7 +7523,7 @@
pos_T *pos;
int c;
#ifdef FEAT_FOLDING
- linenr_T lnum = curwin->w_cursor.lnum;
+ pos_T old_cursor = curwin->w_cursor;
int old_KeyTyped = KeyTyped; /* getting file may reset it */

No comments: