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 */
 #endif
 
@@ -7552,7 +7552,7 @@
 #endif
 #ifdef FEAT_FOLDING
     if (cap->oap->op_type == OP_NOP
-           && (pos == (pos_T *)-1 || lnum != curwin->w_cursor.lnum)
+           && (pos == (pos_T *)-1 || !equalpos(old_cursor, *pos))
            && (fdo_flags & FDO_MARK)
            && old_KeyTyped)
        foldOpenCursor();



Mit freundlichen Grüßen
Christian
-- 

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

Raspunde prin e-mail lui