* riece-naming.el (riece-naming-assert-rename): Follow the
[riece] / lisp / riece-naming.el
index 6a59cd2..5295b8d 100644 (file)
@@ -36,7 +36,8 @@
       (let ((channel-identity (riece-make-identity channel-name
                                                   riece-server-name)))
        (riece-join-channel channel-identity)
-       (riece-switch-to-channel channel-identity))))
+       (riece-switch-to-channel channel-identity)
+       (setq riece-join-channel-candidate nil))))
 
 (defun riece-naming-assert-part (user-name channel-name)
   (riece-user-toggle-channel user-name channel-name nil)
            riece-real-nickname new-name))
   (let* ((old (riece-get-user old-name))
         (channels (riece-user-channels old))
-        users pointer)
+        users user)
     (while channels
       (setq users (riece-channel-get-users (car channels))
-           pointer (member old-name users))
-      (if pointer
-         (setcar pointer new-name))
-      (setq users (riece-channel-get-operators (car channels))
-           pointer (member old-name users))
-      (if pointer
-         (setcar pointer new-name))
-      (setq users (riece-channel-get-speakers (car channels))
-           pointer (member old-name users))
-      (if pointer
-         (setcar pointer new-name))
+           user (car (riece-identity-assoc old-name users t)))
+      (if user
+         (setcar user new-name))
       (setq channels (cdr channels)))
-    (riece-rename-user old-name new-name)))
+    (riece-rename-user old-name new-name))
+  ;; Rename the channel buffer.
+  (let* ((old-identity (riece-make-identity old-name riece-server-name))
+        (new-identity (riece-make-identity new-name riece-server-name))
+        (pointer (riece-identity-member old-identity riece-current-channels)))
+    (when pointer
+      (setcar pointer new-identity)
+      (with-current-buffer (riece-channel-buffer old-identity)
+       (rename-buffer (riece-channel-buffer-name new-identity) t)
+       (setq riece-channel-buffer-alist
+             (cons (cons new-identity (current-buffer))
+                   (delq (riece-identity-assoc old-identity
+                                               riece-channel-buffer-alist)
+                         riece-channel-buffer-alist))))
+      (if (riece-identity-equal old-identity riece-current-channel)
+         (riece-switch-to-channel new-identity)))))
 
 (provide 'riece-naming)