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