(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)
(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 ()
(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)
(if (memq ?o user)
"@"
(if (memq ?v user)
- "+")
- "-"))
+ "+"
+ "-")))
"-"))))))
(defun riece-update-buffers (&optional buffers)
(unless buffers
(setq buffers riece-buffer-list))
(while buffers
- (save-excursion
- (set-buffer (car buffers))
- (run-hooks 'riece-update-buffer-functions))
+ (if (buffer-live-p (car buffers))
+ (save-excursion
+ (set-buffer (car buffers))
+ (run-hooks 'riece-update-buffer-functions)))
(setq buffers (cdr buffers)))
(run-hooks 'riece-update-indicator-functions)
(force-mode-line-update t)
(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
(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)
(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)