* riece-display.el (riece-inhibit-update-buffers): New variable.
[elisp/riece.git] / lisp / riece-unread.el
index d2e3100..8a856e2 100644 (file)
          (delete (riece-message-target message) riece-unread-channels))
     (add-to-list 'riece-unread-channels
                 (riece-message-target message))
-    (riece-unread-update-channel-list-buffer)))
+    (unless riece-inhibit-update-buffers
+      (riece-unread-update-channel-list-buffer))))
 
 (defun riece-unread-channel-switch-hook ()
   (setq riece-unread-channels
        (delete riece-current-channel
                riece-unread-channels))
-  (riece-unread-update-channel-list-buffer))
+  (unless riece-inhibit-update-buffers
+    (riece-unread-update-channel-list-buffer)))
 
 (defun riece-unread-update-channel-list-buffer ()
   (if riece-channel-list-buffer-mode
@@ -62,7 +64,9 @@
                (let ((channel (match-string 3)))
                  (replace-match
                   (concat "\\1"
-                          (if (member channel riece-unread-channels)
+                          (if (member (save-match-data
+                                        (riece-encode-identity channel))
+                                      riece-unread-channels)
                               "!"
                             " ")
                           "\\3"))))
@@ -83,8 +87,8 @@
            'riece-unread-display-message-function)
   (add-hook 'riece-channel-switch-hook
            'riece-unread-channel-switch-hook)
-  (add-hook 'riece-update-buffers-hook
-           'riece-unread-update-channel-list-buffer)
+  (add-hook 'riece-update-buffer-functions
+           'riece-unread-update-channel-list-buffer t)
   (define-key riece-command-mode-map
     "\C-c\C-u" 'riece-unread-switch-to-channel)
   (define-key riece-dialogue-mode-map