From 81063e0b7b35a9cb9f30b7014e3ea8b8404a9aec Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Wed, 25 Apr 2012 16:38:31 +0900 Subject: [PATCH] Complete multiple channels when joining. --- lisp/ChangeLog | 7 ++++++ lisp/riece-commands.el | 43 ++++++++++++++++++++++--------------- lisp/riece-mcat-japanese.el | 4 ++-- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0bd5511..fd0a46e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2012-04-25 Daiki Ueno + + * 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 * riece-commands.el (riece-command-reorder-channels): New command. diff --git a/lisp/riece-commands.el b/lisp/riece-commands.el index 55a66a7..4f74b45 100644 --- a/lisp/riece-commands.el +++ b/lisp/riece-commands.el @@ -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)) diff --git a/lisp/riece-mcat-japanese.el b/lisp/riece-mcat-japanese.el index ef6199e..86acfe3 100644 --- a/lisp/riece-mcat-japanese.el +++ b/lisp/riece-mcat-japanese.el @@ -130,8 +130,8 @@ ("Inviting %s\n" . "%s を招待しています\n") ("Inviting %s to %s" . "%s を %s に招待しています") ("Join Channel" . "チャンネルに参加する") - ("Join channel/user (default %s): " . "参加するチャンネルまたはユーザ (既定値 %s): ") - ("Join channel/user: " . "参加するチャンネルまたはユーザ: ") + ("Join channel/user" . "参加するチャンネルまたはユーザ") + ("Join channel/user (default %s)" . "参加するチャンネルまたはユーザ (既定値 %s)") ("Keep an IRC connection." . "接続を維持") ("Key for %s: " . "%s のキー: ") ("Key for %s: Quit" . "%s のキー: 中止") -- 2.25.1