changeset 72836:7e254a2d157c

* net/rcirc.el (rcirc-scroll-show-maximum-output): Rename from rcirc-show-maximum-output. (rcirc-mode): Remove window-scroll-function hook. (rcirc-scroll-to-bottom): Remove function. (rcirc-print): Recenter so point stays at the bottom of the window if point was already there.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 12 Sep 2006 16:48:55 +0000
parents 1c517ee1ca2c
children 3f39d6fe4928
files lisp/ChangeLog lisp/net/rcirc.el
diffstat 2 files changed, 33 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Sep 12 16:47:50 2006 +0000
+++ b/lisp/ChangeLog	Tue Sep 12 16:48:55 2006 +0000
@@ -1,3 +1,12 @@
+2006-09-07  Ryan Yeske  <rcyeske@gmail.com>
+
+	* net/rcirc.el (rcirc-scroll-show-maximum-output): Rename from
+	rcirc-show-maximum-output.
+	(rcirc-mode): Remove window-scroll-function hook.
+	(rcirc-scroll-to-bottom): Remove function.
+	(rcirc-print): Recenter so point stays at the bottom of the window
+	if point was already there.
+
 2006-09-12  Paul Eggert  <eggert@cs.ucla.edu>
 
 	* comint.el (comint-exec-1): Set EMACS to the full name of Emacs,
--- a/lisp/net/rcirc.el	Tue Sep 12 16:47:50 2006 +0000
+++ b/lisp/net/rcirc.el	Tue Sep 12 16:48:55 2006 +0000
@@ -142,7 +142,7 @@
 		 (integer :tag "Number of lines"))
   :group 'rcirc)
 
-(defcustom rcirc-show-maximum-output t
+(defcustom rcirc-scroll-show-maximum-output t
   "*If non-nil, scroll buffer to keep the point at the bottom of
 the window."
   :type 'boolean
@@ -762,8 +762,6 @@
   (add-hook 'change-major-mode-hook 'rcirc-change-major-mode-hook nil t)
   (add-hook 'kill-buffer-hook 'rcirc-kill-buffer-hook nil t)
 
-  (add-hook 'window-scroll-functions 'rcirc-scroll-to-bottom nil t)
-
   ;; add to buffer list, and update buffer abbrevs
   (when target				; skip server buffer
     (let ((buffer (current-buffer)))
@@ -1166,14 +1164,6 @@
 (defvar rcirc-last-sender nil)
 (make-variable-buffer-local 'rcirc-last-sender)
 
-(defun rcirc-scroll-to-bottom (window display-start)
-  "Scroll window to show maximum output if `rcirc-show-maximum-output' is
-non-nil."
-  (when rcirc-show-maximum-output
-    (with-selected-window window
-      (when (>= (window-point) rcirc-prompt-end-marker)
-	(recenter -1)))))
-
 (defun rcirc-print (process sender response target text &optional activity)
   "Print TEXT in the buffer associated with TARGET.
 Format based on SENDER and RESPONSE.  If ACTIVITY is non-nil,
@@ -1252,17 +1242,34 @@
 
 	  ;; set the window point for buffers show in windows
 	  (walk-windows (lambda (w)
-			  (unless (eq (selected-window) w)
-			    (when (and (eq (current-buffer)
-					   (window-buffer w))
-				       (>= (window-point w)
-					   rcirc-prompt-end-marker))
-			      (set-window-point w (point-max)))))
+			  (when (and (not (eq (selected-window) w))
+				     (eq (current-buffer)
+					 (window-buffer w))
+				     (>= (window-point w)
+					 rcirc-prompt-end-marker))
+			    (set-window-point w (point-max))))
 			nil t)
 
 	  ;; restore the point
 	  (goto-char (if moving rcirc-prompt-end-marker old-point))
 
+        ;; keep window on bottom line if it was already there
+	  (when rcirc-scroll-show-maximum-output
+	    (walk-windows (lambda (w)
+			    (when (eq (window-buffer w) (current-buffer))
+			      (with-current-buffer (window-buffer w)
+				(when (eq major-mode 'rcirc-mode)
+				  (with-selected-window w
+				    (when (<= (- (window-height) 
+						 (- (line-number-at-pos
+						     (window-point))
+						    (line-number-at-pos
+						     (window-start)))
+						 1)
+					      0)
+				      (recenter -1)))))))
+			  nil t))
+
 	  ;; flush undo (can we do something smarter here?)
 	  (buffer-disable-undo)
 	  (buffer-enable-undo))