diff --git a/lisp/follow.el b/lisp/follow.el index acc2b26c55..faac87986b 100644 --- a/lisp/follow.el +++ b/lisp/follow.el @@ -557,7 +557,7 @@ follow-scroll-up-arg (let ((opoint (point)) (owin (selected-window))) (while ;; If we are too near EOB, try scrolling the previous window. - (condition-case nil (progn (scroll-up arg) nil) + (condition-case nil (progn (scroll-up-command arg) nil) (end-of-buffer (condition-case nil (progn (follow-previous-window) t) (error @@ -576,7 +576,7 @@ follow-scroll-down-arg This is an internal function for `follow-scroll-down' and `follow-scroll-down-window'." (let ((opoint (point))) - (scroll-down arg) + (scroll-down-command arg) (unless (and scroll-preserve-screen-position (get this-command 'scroll-command)) (goto-char opoint)) @@ -596,7 +596,7 @@ follow-scroll-up-window Works like `scroll-up' when not in Follow mode." (interactive "P") (cond ((not follow-mode) - (scroll-up arg)) + (scroll-up-command arg)) ((eq arg '-) (follow-scroll-down-window)) (t (follow-scroll-up-arg arg)))) @@ -616,7 +616,7 @@ follow-scroll-down-window Works like `scroll-down' when not in Follow mode." (interactive "P") (cond ((not follow-mode) - (scroll-down arg)) + (scroll-down-command arg)) ((eq arg '-) (follow-scroll-up-window)) (t (follow-scroll-down-arg arg)))) @@ -635,13 +635,16 @@ follow-scroll-up Works like `scroll-up' when not in Follow mode." (interactive "P") (cond ((not follow-mode) - (scroll-up arg)) + (scroll-up-command arg)) (arg (follow-scroll-up-arg arg)) (t (let* ((windows (follow-all-followers)) (end (window-end (car (reverse windows))))) (if (eq end (point-max)) - (signal 'end-of-buffer nil) + (if (or (null scroll-error-top-bottom) + (eobp)) + (signal 'end-of-buffer nil) + (goto-char (point-max))) (select-window (car windows)) ;; `window-end' might return nil. (if end @@ -663,14 +666,17 @@ follow-scroll-down Works like `scroll-down' when not in Follow mode." (interactive "P") (cond ((not follow-mode) - (scroll-down arg)) + (scroll-down-command arg)) (arg (follow-scroll-down-arg arg)) (t (let* ((windows (follow-all-followers)) (win (car (reverse windows))) (start (window-start (car windows)))) (if (eq start (point-min)) - (signal 'beginning-of-buffer nil) + (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)