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

Re: Cursor anomoly: apparent and actual positions differ

Expand Messages
  • Christian Brabandt
    Hi John! ... Looks like a redraw issue to me. This fixes it for me: diff --git a/src/eval.c b/src/eval.c ... +++ b/src/eval.c @@ -18507,7 +18507,7 @@
    Message 1 of 5 , May 2 6:51 AM
    • 0 Attachment
      Hi John!

      On Mo, 30 Apr 2012, John Beckett wrote:

      > I confirm there is a bug (Vim 7.3.509 on Windows).
      >
      > I slightly simplified the example to show the minimum that
      > demonstrates the problem, as below:
      >
      > " ----------- start bug.txt ------------------
      > " To show anomaly, launch Vim as:
      > " vim -N -u NONE bug.txt
      > " and enter:
      > " :so %
      > " :13
      > "
      > if v:version >= 700
      > au BufLeave * let b:winview = winsaveview()
      > au BufEnter * if exists('b:winview') | call winrestview(b:winview) | endif
      > endif
      > "
      > " Now enter:
      > " :copen
      > " CTRL-W CTRL-W
      > " Stop and see where cursor is, then press j
      > " which shows that cursor was NOT where it appeared to be.
      > " First pressing Ctrl-L or entering :redraw do not help.
      > " ----------- end bug.txt --------------------
      >
      > There is no problem if use ':new' or ':rightbelow new' instead
      > of ':copen'. Seems the quickfix window is part of problem.
      >
      > I can also see the problem if start Vim normally, then just yank
      > the two au commands and use :@" to source them, then enter
      > :copen Ctrl-W w. I have seen the cursor end up in the tildes
      > after end-of-file.
      >
      > Using ':echo b:winview' shows:
      > {'lnum': 13, 'leftcol': 0, 'col': 0, 'topfill': 0,
      > 'topline': 11, 'coladd': 0, 'skipcol': 0, 'curswant': 0}
      >
      > It looks like topline is wrong.

      Looks like a redraw issue to me. This fixes it for me:
      diff --git a/src/eval.c b/src/eval.c
      --- a/src/eval.c
      +++ b/src/eval.c
      @@ -18507,7 +18507,7 @@
      check_cursor();
      changed_cline_bef_curs();
      invalidate_botline();
      - redraw_later(VALID);
      + redraw_later(NOT_VALID);

      if (curwin->w_topline == 0)
      curwin->w_topline = 1;


      regards,
      Christian

      --
      You received this message from the "vim_use" 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
      ... Perhaps this should call changed_window_setting() instead of the individual items marked as changed? -- Close your shells, or I ll kill -9 you Tomorrow
      Message 2 of 5 , May 2 11:55 AM
      • 0 Attachment
        Christian Brabandt wrote:

        > On Mo, 30 Apr 2012, John Beckett wrote:
        >
        > > I confirm there is a bug (Vim 7.3.509 on Windows).
        > >
        > > I slightly simplified the example to show the minimum that
        > > demonstrates the problem, as below:
        > >
        > > " ----------- start bug.txt ------------------
        > > " To show anomaly, launch Vim as:
        > > " vim -N -u NONE bug.txt
        > > " and enter:
        > > " :so %
        > > " :13
        > > "
        > > if v:version >= 700
        > > au BufLeave * let b:winview = winsaveview()
        > > au BufEnter * if exists('b:winview') | call winrestview(b:winview) | endif
        > > endif
        > > "
        > > " Now enter:
        > > " :copen
        > > " CTRL-W CTRL-W
        > > " Stop and see where cursor is, then press j
        > > " which shows that cursor was NOT where it appeared to be.
        > > " First pressing Ctrl-L or entering :redraw do not help.
        > > " ----------- end bug.txt --------------------
        > >
        > > There is no problem if use ':new' or ':rightbelow new' instead
        > > of ':copen'. Seems the quickfix window is part of problem.
        > >
        > > I can also see the problem if start Vim normally, then just yank
        > > the two au commands and use :@" to source them, then enter
        > > :copen Ctrl-W w. I have seen the cursor end up in the tildes
        > > after end-of-file.
        > >
        > > Using ':echo b:winview' shows:
        > > {'lnum': 13, 'leftcol': 0, 'col': 0, 'topfill': 0,
        > > 'topline': 11, 'coladd': 0, 'skipcol': 0, 'curswant': 0}
        > >
        > > It looks like topline is wrong.
        >
        > Looks like a redraw issue to me. This fixes it for me:
        > diff --git a/src/eval.c b/src/eval.c
        > --- a/src/eval.c
        > +++ b/src/eval.c
        > @@ -18507,7 +18507,7 @@
        > check_cursor();
        > changed_cline_bef_curs();
        > invalidate_botline();
        > - redraw_later(VALID);
        > + redraw_later(NOT_VALID);
        >
        > if (curwin->w_topline == 0)
        > curwin->w_topline = 1;

        Perhaps this should call changed_window_setting() instead of the
        individual items marked as changed?

        --
        Close your shells, or I'll kill -9 you
        Tomorrow I'll quota you
        Remember the disks'll always be full
        And then while I'm away
        I'll write ~ everyday
        And I'll send-pr all my buggings to you.
        [ CVS log "Beatles style" for FreeBSD ports/INDEX, Satoshi Asami ]

        /// 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_use" 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
      • Christian Brabandt
        Hi Bram! ... Yes, this also seems to work. regards, Christian -- You received this message from the vim_use maillist. Do not top-post! Type your reply below
        Message 3 of 5 , May 2 11:28 PM
        • 0 Attachment
          Hi Bram!

          On Mi, 02 Mai 2012, Bram Moolenaar wrote:

          >
          > Christian Brabandt wrote:
          >
          > > On Mo, 30 Apr 2012, John Beckett wrote:
          > >
          > > > I confirm there is a bug (Vim 7.3.509 on Windows).
          > > >
          > > > I slightly simplified the example to show the minimum that
          > > > demonstrates the problem, as below:
          > > >
          > > > " ----------- start bug.txt ------------------
          > > > " To show anomaly, launch Vim as:
          > > > " vim -N -u NONE bug.txt
          > > > " and enter:
          > > > " :so %
          > > > " :13
          > > > "
          > > > if v:version >= 700
          > > > au BufLeave * let b:winview = winsaveview()
          > > > au BufEnter * if exists('b:winview') | call winrestview(b:winview) | endif
          > > > endif
          > > > "
          > > > " Now enter:
          > > > " :copen
          > > > " CTRL-W CTRL-W
          > > > " Stop and see where cursor is, then press j
          > > > " which shows that cursor was NOT where it appeared to be.
          > > > " First pressing Ctrl-L or entering :redraw do not help.
          > > > " ----------- end bug.txt --------------------
          > > >
          > > > There is no problem if use ':new' or ':rightbelow new' instead
          > > > of ':copen'. Seems the quickfix window is part of problem.
          > > >
          > > > I can also see the problem if start Vim normally, then just yank
          > > > the two au commands and use :@" to source them, then enter
          > > > :copen Ctrl-W w. I have seen the cursor end up in the tildes
          > > > after end-of-file.
          > > >
          > > > Using ':echo b:winview' shows:
          > > > {'lnum': 13, 'leftcol': 0, 'col': 0, 'topfill': 0,
          > > > 'topline': 11, 'coladd': 0, 'skipcol': 0, 'curswant': 0}
          > > >
          > > > It looks like topline is wrong.
          > >
          > > Looks like a redraw issue to me. This fixes it for me:
          > > diff --git a/src/eval.c b/src/eval.c
          > > --- a/src/eval.c
          > > +++ b/src/eval.c
          > > @@ -18507,7 +18507,7 @@
          > > check_cursor();
          > > changed_cline_bef_curs();
          > > invalidate_botline();
          > > - redraw_later(VALID);
          > > + redraw_later(NOT_VALID);
          > >
          > > if (curwin->w_topline == 0)
          > > curwin->w_topline = 1;
          >
          > Perhaps this should call changed_window_setting() instead of the
          > individual items marked as changed?

          Yes, this also seems to work.

          regards,
          Christian

          --
          You received this message from the "vim_use" 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.