Subject: Scrolling problems in lexbind-new branch
From: Juanma Barranquero <[email-masked]>
To: Bug-Gnu-Emacs <[email-masked]>
Date: Mon, 21 Mar 2011 04:04:06 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 24.0.50
Package: emacs

I can reproduce this at will on lexbind-new, and not at all on trunk.

Assume you have a test file, test.txt, with many non-empty lines.
That's not really required (it could be any file long enough to cause
scrolling), but makes the bug easier to see.

In case it matters, I'm using DejaVu Sans Mono:

    uniscribe:-outline-DejaVu Sans
Mono-normal-normal-normal-mono-13-*-*-*-c-*-iso8859-1

Now do:

   emacs -Q --eval "(progn (setq scroll-conservatively 1)
(setq-default show-trailing-whitespace t))" test.txt
   <right>
   <down>  ;;; keep it pressed until it starts line-by-line scrolling

(The value of scroll-conservatively is irrelevant, as long as it is
greater than zero.)

What I see is that the cursor stops in the next-to-last line;
scrolling continues normally, but the cursor does not advance to the
last line. (In fact, if you keep it pressed down enough time, it
eventually moves to the last line, but in my setup that can take
several hundred lines.)

Now, with the cursor on the next-to-last line, move it to column 0, so

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx       ; # is the cursor position
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx       ; last line of the window,
line number N

Now <down> moves the cursor to the last line:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx       ; last line of the window,
line number N

And then <right> moves to the right *and* scrolls the window:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x#xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx       ; line number N
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx       ; last line of the window

Another, likely related effect:

  emacs -Q --eval "(setq-default show-trailing-whitespace t)" test.txt

then keep <down> pressed.

Instead of scrolling to the last line of the window and then
recentering, it starts scrolling line-by-line once the cursor reaches
the middle point of the window height.