bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#23098: 25.0.92; (recenter -1) can leave point in the middle of the w


From: Jorgen Schäfer
Subject: bug#23098: 25.0.92; (recenter -1) can leave point in the middle of the window
Date: Thu, 24 Mar 2016 16:27:53 +0000

> If you do the above, do you still get the cursor recentered in the
> window?

Hm. That seems to work. I was using let-binding around recenter, which does not work. Even resetting scroll-conservatively after the call to recenter will exhibit the bug again. So setting scroll-conservatively is a possible workaround, although it means that *all* scrolling will be affected by scroll-conservatively. E.g. scrolling through the backlog of a M-x shell session would be affected, even though it just should affect the scrolling when the last line of the buffer is visible at all.

On Thu, Mar 24, 2016 at 4:48 PM Eli Zaretskii <eliz@gnu.org> wrote:
> From: Jorgen Schäfer <jorgen.schaefer@gmail.com>
> Date: Thu, 24 Mar 2016 08:12:08 +0000
> Cc: 23098@debbugs.gnu.org
>
> > If you set scroll-conservatively to a value larger than 100, don't you
> > get point as low as possible?
>
> No.

That's strange.

Let me be absolutely sure we are trying the same thing.  What I did is
the following:

  . emacs -Q
  . paste the following into *scratch*, which is exactly the code you
    posted with a single line added:

    (require 'cl)
    (let* ((b (get-buffer-create "*Bug Repro*"))
           (w (selected-window))
           (l (window-height w))
           o)
      (set-window-buffer w b)
      (select-window w)
      (set-buffer b)
      (erase-buffer)
      (setq scroll-conservatively 101) ;; <<<<< this line was added
      (cl-dotimes (i (* l 2))
                  (insert "foo\n"))
      (goto-char (point-min))
      (forward-line (+ l 2))
      (setq o (make-overlay (point) (point)))
      (overlay-put o 'after-string "\n")
      (goto-char (point-max))
      (recenter -1))

  . M-x eval-region RET

After this, buffer "*Bug Repro*" pops up, with point at EOB positioned
on the 2nd line from bottom of the window (instead of the last line).

If you do the above, do you still get the cursor recentered in the
window?  If so, I will try to play with display defaults in order to
reproduce what you see.

Thanks.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]