* riece-display.el (riece-update-buffers): Run
[riece] / lisp / riece-display.el
index 33144dd..3101aa3 100644 (file)
 (require 'riece-misc)
 (require 'riece-layout)
 
+(defvar riece-channel-buffer-format "*Channel:%s*"
+  "Format of channel message buffer.")
+(defvar riece-channel-buffer-alist nil
+  "An alist mapping identities to channel buffers.")
+
 (defvar riece-update-buffer-functions nil
   "Functions to redisplay the buffer.
 Local to the buffer in `riece-buffer-list'.")
@@ -173,7 +178,8 @@ Local to the buffer in `riece-buffer-list'.")
       (run-hooks 'riece-update-buffer-functions))
     (setq buffers (cdr buffers)))
   (run-hooks 'riece-update-indicator-functions)
-  (force-mode-line-update t))
+  (force-mode-line-update t)
+  (run-hooks 'riece-update-buffer-hook))
 
 (defun riece-channel-buffer-name (identity)
   (let ((channels (riece-identity-member identity riece-current-channels)))
@@ -187,7 +193,11 @@ Local to the buffer in `riece-buffer-list'.")
   (autoload 'riece-channel-mode "riece"))
 (defun riece-channel-buffer-create (identity)
   (with-current-buffer
-      (riece-get-buffer-create (riece-channel-buffer-name identity))
+      (riece-get-buffer-create (riece-channel-buffer-name identity)
+                              'riece-channel-mode)
+    (setq riece-channel-buffer-alist
+         (cons (cons identity (current-buffer))
+               riece-channel-buffer-alist))
     (unless (eq major-mode 'riece-channel-mode)
       (riece-channel-mode)
       (let (buffer-read-only)
@@ -199,11 +209,13 @@ Local to the buffer in `riece-buffer-list'.")
        (run-hook-with-args 'riece-channel-buffer-create-functions identity)))
     (current-buffer)))
 
+(defun riece-channel-buffer (identity)
+  (cdr (riece-identity-assoc identity riece-channel-buffer-alist)))
+
 (defun riece-switch-to-channel (identity)
   (let ((last riece-current-channel))
     (setq riece-current-channel identity
-         riece-channel-buffer (get-buffer (riece-channel-buffer-name
-                                           riece-current-channel)))
+         riece-channel-buffer (riece-channel-buffer riece-current-channel))
     (run-hook-with-args 'riece-after-switch-to-channel-functions last)))
 
 (defun riece-join-channel (identity)