Saturday, January 12, 2013

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

On 9 Sty, 20:07, Christian Brabandt <cbli...@256bit.org> wrote:
> 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: