diff options
author | Antoine Levitt <antoine.levitt@gmail.com> | 2011-12-31 10:25:48 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2011-12-31 10:25:48 +0200 |
commit | 7c2b8880efc4c11f6c56b2bf13854d0e1bdd2d8d (patch) | |
tree | fee2c9b26fa24d575b14c909f11904b81871ceea /lisp/erc/erc-goodies.el | |
parent | 3778cdd8efa2a0a5ea06d00277499fd6e7300cd2 (diff) | |
download | emacs-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.el | 32 |
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 |