Complete multiple channels when joining.
authorDaiki Ueno <ueno@unixuser.org>
Wed, 25 Apr 2012 07:38:31 +0000 (16:38 +0900)
committerDaiki Ueno <ueno@unixuser.org>
Wed, 25 Apr 2012 07:39:41 +0000 (16:39 +0900)
lisp/ChangeLog
lisp/riece-commands.el
lisp/riece-mcat-japanese.el

index 0bd5511..fd0a46e 100644 (file)
@@ -1,3 +1,10 @@
+2012-04-25  Daiki Ueno  <ueno@unixuser.org>
+
+       * riece-commands.el (riece-command-join): Allow multiple choices
+       using riece-completing-read-multiple.
+       * riece-mcat-japanese.el (riece-mcat-japanese-alist): Update
+       translation.
+
 2011-10-27  Daiki Ueno  <ueno@unixuser.org>
 
        * riece-commands.el (riece-command-reorder-channels): New command.
index 55a66a7..4f74b45 100644 (file)
@@ -520,26 +520,35 @@ the layout to the selected layout-name."
       (riece-join-channel target)
       (riece-switch-to-channel target))))
 
-(defun riece-command-join (target)
+(defun riece-command-join (targets)
   (interactive
-   (let ((completion-ignore-case t))
+   (let ((completion-ignore-case t)
+        (candidates (mapcar (lambda (channel)
+                              (list (riece-format-identity channel)))
+                            (delq nil (riece-get-identities-on-server
+                                       (riece-current-server-name)))))
+        (default (if riece-join-channel-candidate
+                     (riece-format-identity
+                      riece-join-channel-candidate))))
      (list
-      (if riece-join-channel-candidate
-         (let ((default (riece-format-identity
-                         riece-join-channel-candidate)))
-           (riece-completing-read-identity
-            (format (riece-mcat "Join channel/user (default %s): ") default)
-            (riece-get-identities-on-server (riece-current-server-name))
-            nil nil nil nil default))
-       (riece-completing-read-identity
-        (riece-mcat "Join channel/user: ")
-        (riece-get-identities-on-server (riece-current-server-name)))))))
-  (let ((pointer (riece-identity-member target riece-current-channels)))
-    (if pointer
+      (mapcar #'riece-parse-identity
+             (riece-completing-read-multiple
+              (if default
+                  (format (riece-mcat "Join channel/user (default %s)")
+                          default)
+                (riece-mcat "Join channel/user"))
+              candidates nil nil nil nil default)))))
+  (let (pointer)
+    (if (and (= (length targets) 1)
+            (setq pointer (riece-identity-member (car targets)
+                                                 riece-current-channels)))
        (riece-command-switch-to-channel (car pointer))
-      (if (riece-channel-p (riece-identity-prefix target))
-         (riece-command-join-channel target nil)
-       (riece-command-join-partner target)))))
+      (setq pointer targets)
+      (while pointer
+       (if (riece-channel-p (riece-identity-prefix (car pointer)))
+           (riece-command-join-channel (car pointer) nil)
+         (riece-command-join-partner (car pointer)))
+       (setq pointer (cdr pointer))))))
 
 (defun riece-command-part-channel (target message)
   (unless (riece-server-opened (riece-identity-server target))
index ef6199e..86acfe3 100644 (file)
     ("Inviting %s\n" . "%s \e$B$r>7BT$7$F$$$^$9\e(B\n")
     ("Inviting %s to %s" . "%s \e$B$r\e(B %s \e$B$K>7BT$7$F$$$^$9\e(B")
     ("Join Channel" . "\e$B%A%c%s%M%k$K;22C$9$k\e(B")
-    ("Join channel/user (default %s): " . "\e$B;22C$9$k%A%c%s%M%k$^$?$O%f!<%6\e(B (\e$B4{DjCM\e(B %s): ")
-    ("Join channel/user: " . "\e$B;22C$9$k%A%c%s%M%k$^$?$O%f!<%6\e(B: ")
+    ("Join channel/user" . "\e$B;22C$9$k%A%c%s%M%k$^$?$O%f!<%6\e(B")
+    ("Join channel/user (default %s)" . "\e$B;22C$9$k%A%c%s%M%k$^$?$O%f!<%6\e(B (\e$B4{DjCM\e(B %s)")
     ("Keep an IRC connection." . "\e$B@\B3$r0];}\e(B")
     ("Key for %s: " . "%s \e$B$N%-!<\e(B: ")
     ("Key for %s: Quit" . "%s \e$B$N%-!<\e(B: \e$BCf;_\e(B")