Loading ...
Sorry, an error occurred while loading the content.
 

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

Expand Messages
  • Christian Brabandt
    Hi Wiktor! ... 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
    Message 1 of 2 , Jan 9, 2013
      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
    • Bram Moolenaar
      ... Thanks for the patch! -- hundred-and-one symptoms of being an internet addict: 254. You wake up daily with your keyboard printed on your forehead. /// Bram
      Message 2 of 2 , Jan 11, 2013
        Christian Brabandt wrote:

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

        Thanks for the patch!


        --
        hundred-and-one symptoms of being an internet addict:
        254. You wake up daily with your keyboard printed on your forehead.

        /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
        /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
        \\\ an exciting new programming language -- http://www.Zimbu.org ///
        \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

        --
        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
      Your message has been successfully submitted and would be delivered to recipients shortly.