X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Friece-display.el;h=a3d59e20f93c5c167eaed17ce0e4cad7adcc3bc2;hb=c49ff9276f90e081f670d97cd68e37c00a590e78;hp=6745e2d8173d1180f640356a5c2d1f38c473427b;hpb=dbbb13966af9a8b9d41783f898829879b928488c;p=riece diff --git a/lisp/riece-display.el b/lisp/riece-display.el index 6745e2d..a3d59e2 100644 --- a/lisp/riece-display.el +++ b/lisp/riece-display.el @@ -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 () @@ -400,7 +404,8 @@ Local to the buffer in `riece-buffer-list'.") (if channels (setq identity (car channels)) (if riece-debug - (message "%S is not a member of riece-current-channels" identity))) + (riece-debug (format "%S is not a member of riece-current-channels" + identity)))) (format riece-channel-buffer-format (riece-format-identity identity)))) (eval-when-compile @@ -424,7 +429,14 @@ Local to the buffer in `riece-buffer-list'.") (current-buffer))) (defun riece-channel-buffer (identity) - (cdr (riece-identity-assoc identity riece-channel-buffer-alist))) + (let ((entry (riece-identity-assoc identity riece-channel-buffer-alist))) + (if entry + (if (buffer-live-p (cdr entry)) + (cdr entry) + (if riece-debug + (riece-debug + (format "riece-channel-buffer: nonexistent buffer: %s" + (riece-format-identity identity)))))))) (defun riece-switch-to-channel (identity) (let ((last riece-current-channel) @@ -474,7 +486,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)