[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/net/rcirc.el,v
From: |
Chong Yidong |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/net/rcirc.el,v |
Date: |
Tue, 12 Sep 2006 16:48:56 +0000 |
CVSROOT: /cvsroot/emacs
Module name: emacs
Changes by: Chong Yidong <cyd> 06/09/12 16:48:55
Index: net/rcirc.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/net/rcirc.el,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- net/rcirc.el 7 Sep 2006 20:56:24 -0000 1.27
+++ net/rcirc.el 12 Sep 2006 16:48:55 -0000 1.28
@@ -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)
+ (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)))))
+ (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))