diff options
author | Julien Danjou <julien@danjou.info> | 2011-02-08 23:08:25 -0500 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2011-02-08 23:08:25 -0500 |
commit | 69b2604f776421c24c00b9e631558173d59eebee (patch) | |
tree | 8695e2b6a28e23e0204904168736d8b28357ed09 /lisp/erc | |
parent | 9218b9bd6cc00e473b330808c21e5fdb221757af (diff) | |
download | emacs-69b2604f776421c24c00b9e631558173d59eebee.tar.gz |
Fix tracking visibility in ERC.
* lisp/erc/erc-track.el (erc-window-configuration-change): New function.
This will allow to track buffer visibility when a command is
finished to executed. Idea stolen from rcirc.
(track): Put erc-window-configuration-change in
window-configuration-change-hook.
(erc-modified-channels-update): Remove
erc-modified-channels-update from post-command-hook after update.
Diffstat (limited to 'lisp/erc')
-rw-r--r-- | lisp/erc/ChangeLog | 10 | ||||
-rw-r--r-- | lisp/erc/erc-track.el | 15 |
2 files changed, 21 insertions, 4 deletions
diff --git a/lisp/erc/ChangeLog b/lisp/erc/ChangeLog index ee81bc48693..b7cf79cc3cb 100644 --- a/lisp/erc/ChangeLog +++ b/lisp/erc/ChangeLog @@ -1,3 +1,13 @@ +2011-02-07 Julien Danjou <julien@danjou.info> + + * erc-track.el (erc-window-configuration-change): New function. + This will allow to track buffer visibility when a command is + finished to executed. Idea stolen from rcirc. + (track): Put erc-window-configuration-change in + window-configuration-change-hook. + (erc-modified-channels-update): Remove + erc-modified-channels-update from post-command-hook after update. + 2011-01-31 Antoine Levitt <antoine.levitt@gmail.com> (tiny change) * erc-track.el (track): Don't reset erc-modified-channels-object diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el index de920eb9c33..a89244f695d 100644 --- a/lisp/erc/erc-track.el +++ b/lisp/erc/erc-track.el @@ -653,7 +653,7 @@ module, otherwise the keybindings will not do anything useful." (defadvice switch-to-buffer (after erc-update (&rest args) activate) (erc-modified-channels-update)) (add-hook 'window-configuration-change-hook - 'erc-modified-channels-update)) + 'erc-window-configuration-change)) (add-hook 'erc-insert-post-hook 'erc-track-modified-channels) (add-hook 'erc-disconnected-hook 'erc-modified-channels-update)) ;; enable the tracking keybindings @@ -675,7 +675,7 @@ module, otherwise the keybindings will not do anything useful." (if (featurep 'xemacs) (ad-disable-advice 'switch-to-buffer 'after 'erc-update) (remove-hook 'window-configuration-change-hook - 'erc-modified-channels-update)) + 'erc-window-configuration-change)) (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update) (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels)) ;; disable the tracking keybindings @@ -730,6 +730,12 @@ only consider active buffers visible.") ;;; Tracking the channel modifications +(defun erc-window-configuration-change () + (unless (minibuffer-window-active-p (minibuffer-window)) + ;; delay this until command has finished to make sure window is + ;; actually visible before clearing activity + (add-hook 'post-command-hook 'erc-modified-channels-update))) + (defvar erc-modified-channels-update-inside nil "Variable to prevent running `erc-modified-channels-update' multiple times. Without it, you cannot debug `erc-modified-channels-display', @@ -757,8 +763,9 @@ ARGS are ignored." (erc-modified-channels-remove-buffer buffer)))) erc-modified-channels-alist) (when removed-channel - (erc-modified-channels-display) - (force-mode-line-update t))))) + (erc-modified-channels-display) + (force-mode-line-update t))) + (remove-hook 'post-command-hook 'erc-modified-channels-update))) (defvar erc-track-mouse-face (if (featurep 'xemacs) 'modeline-mousable |