-;;; follow.el --- Minor mode, Synchronize windows showing the same buffer.
+;;; follow.el --- synchronize windows showing the same buffer
-;; Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
-;; Author: Anders Lindgren <andersl@csd.uu.se>
-;; Maintainer: Anders Lindgren <andersl@csd.uu.se>
-;; Created: 25 May 1995
-;; Version: 1.7
+;; Author: Anders Lindgren <andersl@andersl.com>
+;; Maintainer: Anders Lindgren <andersl@andersl.com>
+;; Created: 1995-05-25
;; Keywords: display, window, minor-mode, convenience
-;; Date: 4 Jun 1997
+;; Last Changed: 1999-11-17
;; This file is part of GNU Emacs.
;; and being able to use 144 lines instead of the normal 72... (your
;; mileage may vary).
-
-;; The latest version, and a demonstration, are avaiable at:
-;;
-;; http://www.csd.uu.se/~andersl/emacs.shtml
-
-
;; To test this package, make sure `follow' is loaded, or will be
;; autoloaded when activated (see below). Then do the following:
;;
(eval-when-compile (require 'reporter))
(defun follow-submit-feedback ()
- "Submit feedback on Follow mode to the author: andersl@csd.uu.se"
+ "Submit feedback on Follow mode to the author: andersl@andersl.com"
(interactive)
(require 'reporter)
(and (y-or-n-p "Do you really want to submit a report on Follow mode? ")
(reporter-submit-bug-report
- "Anders Lindgren <andersl@csd.uu.se>"
+ "Anders Lindgren <andersl@andersl.com>"
"follow.el"
'(post-command-hook
post-command-idle-hook
(defun follow-avoid-tail-recenter (&rest rest)
"Make sure windows displaying the end of a buffer aren't recentered.
-This is done by reading and rewriting the start positon of
+This is done by reading and rewriting the start position of
non-first windows in Follow Mode."
(if follow-avoid-tail-recenter-p
(let* ((orig-buffer (current-buffer))
scroll-bar-set-window-start)))
(while cmds
(eval
- (` (defadvice (, (intern (symbol-name (car cmds))))
+ `(defadvice ,(intern (symbol-name (car cmds)))
(after
- (, (intern (concat "follow-" (symbol-name (car cmds)))))
+ ,(intern (concat "follow-" (symbol-name (car cmds))))
activate)
"Adviced by Follow Mode."
- (follow-redraw-after-event (ad-get-arg 0)))))
+ (follow-redraw-after-event (ad-get-arg 0))))
(setq cmds (cdr cmds))))
(while cmds
(eval
- (` (defadvice (, (intern (symbol-name (car cmds))))
+ `(defadvice ,(intern (symbol-name (car cmds)))
(after
- (, (intern (concat "follow-" (symbol-name (car cmds)))))
+ ,(intern (concat "follow-" (symbol-name (car cmds))))
activate)
"Adviced by `follow-mode'."
- (follow-xemacs-scrollbar-support (ad-get-arg 0)))))
+ (follow-xemacs-scrollbar-support (ad-get-arg 0))))
(setq cmds (cdr cmds))))
(new-window-start (window-start win))
(new-window-point (window-point win)))
(cond
- ;; The window was moved. Move it back and
- ;; select a new. If no better could be found,
- ;; we stick the the new start position. This
- ;; is used when the original process filter
- ;; tries to position the cursor at the bottom
- ;; of the window. Example: `lyskom'.
+ ;; The start of the selected window was repositioned.
+ ;; Try to use the original start position and continue
+ ;; working with a window to the "right" in the window
+ ;; chain. This will create the effect that the output
+ ;; starts in one window and continues into the next.
+
+ ;; If the display has changed so much that it is not
+ ;; possible to keep the original window fixed and still
+ ;; display the point then we give up and use the new
+ ;; window start.
+
+ ;; This case is typically used when the process filter
+ ;; tries to reposition the start of the window in order
+ ;; to view the tail of the output.
((not (eq orig-window-start new-window-start))
(follow-debug-message "filter: Moved")
(set-window-start win orig-window-start)