bug#3512: Interaction between scroll variables, scroll-up, scroll-down,
bug#3512: Interaction between scroll variables, scroll-up, scroll-down, and redisplay.
Tue, 9 Jun 2009 12:47:10 +0100
There appears to be a bug under the following conditions:
- Emacs is running in graphical (X11) mode, without the -nw flag; - scroll-margin is set to a value greater than 0; - scroll-preserve-screen-position is set to a non-nil, non-t value;
- Point is at or near the start of the buffer (any line <= scroll-margin); - An attempt is made to scroll the window using scroll-up;
which leads to:
- Window contents are not updated correctly.
Less tersely, I have experienced the following sequence of events, on both Ubuntu 8.10 and Fedora 10 systems.
- Start emacs with -Q option to launch a fresh Emacs window on the desktop. Set the variables scroll-margin to (say) 5, and
scroll-preserve-screen-position to 1. (Setting the latter to 'always also works.)
- Populate the buffer with many lines of input. I normally use the output of "ls -R /" and use head to keep only the first couple of
hundred lines of it. The exact nature of the content appears not to be important, as I have also loaded in files, or used M-: (dolist ..... (insert ....)) to populate the buffer.
- Ensure that point is at the start of the buffer.
- Attempt to view text that is currently off the bottom of the window by pressing Page Down once or more to run the scroll-up command.
- At this point, the cursor moves to roughly the middle of the window, the (GTK) scroll bar moves downwards, but the window
contents remain the same (i.e. the same text is visible as was before pressing Page Down).
- Further presses of Page Down do not move point visibly, do not update the visisble window contents, but *do* move the GTK scroll
bar. This makes me believe that (internally) everything is working correctly, but the normal text update routines are not being called.
- Using scroll-down (i.e. pressing Page Up) maintains this behaviour:
the scroll bar moves back in the opposite direction, but the window contents are not updated. The scroll bar can be moved back and forth at will using sequences of scroll-up and scroll-down commands in this manner.
- Getting point close to either end of the buffer, or using any other command (such as next-line), causes the window contents to be updated correctly. This can lead to a significant apparent jump in the position of point. The location displayed appears to be
consistent with the number of times that the scroll-down and scroll-up commands were used.
- If the point is moved back to the start of the buffer, e.g. with M-<, this behaviour can be repeated as often as desired.
- Running Emacs with the -nw flag (i.e. running inside an XTerm) does not exhibit this behaviour for me.
If you need any more details, please let me know.
Best regards, and happy hunting,
PS The Emacs I'm running this on does not have mail set up, so I have cut and pasted the content into my webmail session. If for some reason this has caused a problem, again, let me know.
[Content generated automatically by M-x report-emacs-bug follows:]
In GNU Emacs 22.2.1 (i486-pc-linux-gnu, GTK+ Version 2.14.1) of 2008-09-05 on vernadsky, modified by Ubuntu Windowing system distributor `The X.Org Foundation', version 11.0.10502000 configured using `configure '--build=i486-linux-gnu' '--host=i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs22:/etc/emacs:/usr/local/share/emacs/22.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/22.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/22.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g -Wl,--as-needed' 'CPPFLAGS=''
Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil
value of $LANG: en_GB.UTF-8 locale-coding-system: utf-8 default-enable-multibyte-characters: t
Major mode: Lisp Interaction
Minor modes in effect: tooltip-mode: t tool-bar-mode: t mouse-wheel-mode: t
menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t unify-8859-on-encoding-mode: t utf-translate-cjk-mode: t auto-compression-mode: t
Recent input: M-x s e t - v a r i a b l e <return> s c r o l l - m a r g i n <return> 5 <return> M-x s e t - v a r i a b l e <return> s c r o l l - p r e s e r v e - s
c r e e n - p o s i t i o n <return> 1 <return> C-u M-! l s SPC - R SPC / SPC | S-SPC h e a d SPC - 2 0 0 <return> <next> <next> <next> M-x r e p o r t - e m a c s - b u g <return>
Recent messages: ("emacs" "-Q") For information about GNU Emacs and the GNU system, type C-h C-a. Loading help-fns...done Loading easymenu...done Loading pp...done Loading emacsbug...
Loading regexp-opt...done Loading emacsbug...done