summaryrefslogtreecommitdiff
path: root/lisp/erc/erc-goodies.el
diff options
context:
space:
mode:
authorAntoine Levitt <antoine.levitt@gmail.com>2011-12-31 10:25:48 +0200
committerEli Zaretskii <eliz@gnu.org>2011-12-31 10:25:48 +0200
commit7c2b8880efc4c11f6c56b2bf13854d0e1bdd2d8d (patch)
treefee2c9b26fa24d575b14c909f11904b81871ceea /lisp/erc/erc-goodies.el
parent3778cdd8efa2a0a5ea06d00277499fd6e7300cd2 (diff)
downloademacs-7c2b8880efc4c11f6c56b2bf13854d0e1bdd2d8d.tar.gz
Fix bug #9246 with scrolling in ERC under word-wrap.
lisp/erc/erc-goodies.el (erc-scroll-to-bottom): Use post-command-hook rather than window-scroll-functions. Fixes a bug with scrolling under word-wrap on a tty.
Diffstat (limited to 'lisp/erc/erc-goodies.el')
-rw-r--r--lisp/erc/erc-goodies.el32
1 files changed, 13 insertions, 19 deletions
diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el
index b2cf9e35622..6f24c59f4bd 100644
--- a/lisp/erc/erc-goodies.el
+++ b/lisp/erc/erc-goodies.el
@@ -60,7 +60,7 @@ argument to `recenter'."
((remove-hook 'erc-mode-hook 'erc-add-scroll-to-bottom)
(dolist (buffer (erc-buffer-list))
(with-current-buffer buffer
- (remove-hook 'window-scroll-functions 'erc-scroll-to-bottom t)))))
+ (remove-hook 'post-command-hook 'erc-scroll-to-bottom t)))))
(defun erc-add-scroll-to-bottom ()
"A hook function for `erc-mode-hook' to recenter output at bottom of window.
@@ -70,35 +70,29 @@ the value of `erc-input-line-position'.
This works whenever scrolling happens, so it's added to
`window-scroll-functions' rather than `erc-insert-post-hook'."
- ;;(make-local-hook 'window-scroll-functions)
- (add-hook 'window-scroll-functions 'erc-scroll-to-bottom nil t))
+ (add-hook 'post-command-hook 'erc-scroll-to-bottom nil t))
-(defun erc-scroll-to-bottom (window display-start)
+(defun erc-scroll-to-bottom ()
"Recenter WINDOW so that `point' is on the last line.
This is added to `window-scroll-functions' by `erc-add-scroll-to-bottom'.
You can control which line is recentered to by customizing the
-variable `erc-input-line-position'.
-
-DISPLAY-START is ignored."
- (if (window-live-p window)
+variable `erc-input-line-position'."
;; Temporarily bind resize-mini-windows to nil so that users who have it
;; set to a non-nil value will not suffer from premature minibuffer
;; shrinkage due to the below recenter call. I have no idea why this
;; works, but it solves the problem, and has no negative side effects.
;; (Fran Litterio, 2003/01/07)
- (let ((resize-mini-windows nil))
- (erc-with-selected-window window
- (save-restriction
- (widen)
- (when (and erc-insert-marker
- ;; we're editing a line. Scroll.
- (> (point) erc-insert-marker))
- (save-excursion
- (goto-char (point-max))
- (recenter (or erc-input-line-position -1))
- (sit-for 0))))))))
+ (let ((resize-mini-windows nil))
+ (save-restriction
+ (widen)
+ (when (and erc-insert-marker
+ ;; we're editing a line. Scroll.
+ (> (point) erc-insert-marker))
+ (save-excursion
+ (goto-char (point-max))
+ (recenter (or erc-input-line-position -1)))))))
;;; Make read only
(define-erc-module readonly nil