* riece-display.el (riece-display-connect-signals): Check nick or
[riece] / lisp / riece-display.el
index f5f3f76..5a16cdf 100644 (file)
@@ -125,11 +125,13 @@ Local to the buffer in `riece-buffer-list'.")
                 (riece-identity-server riece-current-channel))
          (riece-with-server-buffer (riece-identity-server
                                     riece-current-channel)
-           (riece-identity-assoc
-            (riece-identity-prefix (nth 1 (riece-signal-args signal)))
-            (riece-channel-get-users (riece-identity-prefix
-                                      riece-current-channel))
-            t)))))
+           (when (riece-channel-p (riece-identity-prefix
+                                   riece-current-channel))
+             (riece-identity-assoc
+              (riece-identity-prefix (nth 1 (riece-signal-args signal)))
+              (riece-channel-get-users (riece-identity-prefix
+                                        riece-current-channel))
+              t))))))
   (riece-connect-signal
    'user-renamed
    (lambda (signal handback)
@@ -325,7 +327,9 @@ Local to the buffer in `riece-buffer-list'.")
        (while pointer
          (if (cdr pointer)
              (setcdr pointer (cons "," (cdr pointer))))
-         (setq pointer (cdr (cdr pointer)))))
+         (setq pointer (cdr (cdr pointer))))
+       (setq riece-channel-list-indicator
+             (riece-normalize-modeline-string riece-channel-list-indicator)))
     (setq riece-channel-list-indicator "No channel")))
 
 (defun riece-update-status-indicators ()
@@ -343,7 +347,10 @@ Local to the buffer in `riece-buffer-list'.")
                           (riece-user-get-operator riece-real-nickname))
                      "O"
                    "-")
-                 riece-user-indicator riece-real-nickname)))))
+                 riece-user-indicator
+                 (riece-format-identity
+                  (riece-make-identity riece-real-nickname riece-server-name)
+                  t))))))
   (walk-windows
    (lambda (window)
      (with-current-buffer (window-buffer window)
@@ -375,8 +382,8 @@ Local to the buffer in `riece-buffer-list'.")
                      (if (memq ?o user)
                          "@"
                        (if (memq ?v user)
-                           "+")
-                       "-"))
+                           "+"
+                         "-")))
                  "-"))))))
 
 (defun riece-update-buffers (&optional buffers)
@@ -471,7 +478,8 @@ Local to the buffer in `riece-buffer-list'.")
     (if pointer
        (setcar pointer nil))
     (if (riece-identity-equal identity riece-current-channel)
-       (riece-switch-to-nearest-channel pointer))))
+       (riece-switch-to-nearest-channel pointer))
+    (funcall riece-buffer-dispose-function (riece-channel-buffer identity))))
 
 (defun riece-redisplay-buffers (&optional force)
   (riece-update-buffers)