mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-10 08:10:21 -08:00
Fix follow-scroll-down in a small buffer which starts slightly scrolled
This fixes bug #51814. * lisp/follow.el (follow-scroll-down): Do away with the optimization of doing vertical-motion over only one window. Instead move over all windows, to checck for being close to point-min, and setting point accordingly.
This commit is contained in:
parent
480241983e
commit
d4536ff257
1 changed files with 19 additions and 13 deletions
|
|
@ -669,24 +669,30 @@ Works like `scroll-down' when not in Follow mode."
|
|||
(t
|
||||
(let* ((orig-point (point))
|
||||
(windows (follow-all-followers))
|
||||
(win (car (reverse windows)))
|
||||
(start (window-start (car windows))))
|
||||
(start (window-start (car windows)))
|
||||
(lines 0))
|
||||
(if (eq start (point-min))
|
||||
(if (or (null scroll-error-top-bottom)
|
||||
(bobp))
|
||||
(signal 'beginning-of-buffer nil)
|
||||
(goto-char (point-min)))
|
||||
(select-window win)
|
||||
(goto-char start)
|
||||
(vertical-motion (- (- (window-height win)
|
||||
(if header-line-format 2 1) ; always mode-line
|
||||
(if tab-line-format 1 0)
|
||||
next-screen-context-lines)))
|
||||
(set-window-start win (point))
|
||||
(if (< orig-point (window-end win t))
|
||||
(goto-char orig-point)
|
||||
(goto-char start)
|
||||
(vertical-motion (- next-screen-context-lines 1)))
|
||||
(select-window (car windows))
|
||||
(dolist (win windows)
|
||||
(setq lines
|
||||
(+ lines
|
||||
(- (window-height win)
|
||||
(if header-line-format 2 1) ; Count mode-line, too.
|
||||
(if tab-line-format 1 0)))))
|
||||
(setq lines (- lines next-screen-context-lines))
|
||||
(goto-char start)
|
||||
(let ((at-top (> (vertical-motion (- lines)) (- lines))))
|
||||
(set-window-start (car windows) (point))
|
||||
(if at-top
|
||||
(goto-char orig-point)
|
||||
(goto-char start)
|
||||
(vertical-motion (- next-screen-context-lines 1))
|
||||
(if (< orig-point (point))
|
||||
(goto-char orig-point))))
|
||||
(setq follow-internal-force-redisplay t))))))
|
||||
(put 'follow-scroll-down 'scroll-command t)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue