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.
This commit is contained in:
Julien Danjou 2011-02-08 23:08:25 -05:00 committed by Chong Yidong
parent 9218b9bd6c
commit 69b2604f77
2 changed files with 21 additions and 4 deletions

View file

@ -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

View file

@ -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