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)))