Function: follow-scroll-up-arg
follow-scroll-up-arg is a byte-compiled function defined in
follow.el.gz.
Signature
(follow-scroll-up-arg ARG)
Documentation
Scroll the text in a follow mode window chain up by ARG lines.
If ARG is nil, scroll the size of the current window.
This is an internal function for follow-scroll-up and
follow-scroll-up-window.
Source Code
;; Defined in /usr/src/emacs/lisp/follow.el.gz
;; `scroll-up' and `-down', but for windows in Follow mode.
;;
;; Almost like the real thing, except when the cursor ends up outside
;; the top or bottom... In our case however, we end up outside the
;; window and hence we are recentered. Should we let `recenter' handle
;; the point position we would never leave the selected window. To do
;; it ourselves we would need to do our own redisplay, which is easier
;; said than done. (Why didn't I do a real display abstraction from
;; the beginning?)
;;
;; We must sometimes set `follow-internal-force-redisplay', otherwise
;; our post-command-hook will move our windows back into the old
;; position... (This would also be corrected if we would have had a
;; good redisplay abstraction.)
(defun follow-scroll-up-arg (arg)
"Scroll the text in a follow mode window chain up by ARG lines.
If ARG is nil, scroll the size of the current window.
This is an internal function for `follow-scroll-up' and
`follow-scroll-up-window'."
(let ((opoint (point)) (owin (selected-window)))
(while
;; If we are too near EOB, try scrolling the previous window.
(condition-case nil (progn (scroll-up-command arg) nil)
(end-of-buffer
(condition-case nil (progn (follow-previous-window) t)
(error
(select-window owin)
(goto-char opoint)
(signal 'end-of-buffer nil))))))
(unless (and scroll-preserve-screen-position
(get this-command 'scroll-command))
(goto-char opoint))
(setq follow-fixed-window t)))