From: ueno Date: Fri, 29 Aug 2003 01:31:38 +0000 (+0000) Subject: * riece-guess.el (riece-guess-channel-try-functions): Default to X-Git-Tag: riece-0_1_1~1 X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=073a6ae1c9aa680ac5c82a5f422047167416cf25;p=elisp%2Friece.git * riece-guess.el (riece-guess-channel-try-functions): Default to nil. (riece-default-guess-channel): Abolish. (riece-command-guess-switch-to-channel): Reconstruct riece-guess-candidates when it is empty. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2624de0..2dc7293 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2003-08-29 Daiki Ueno + + * riece-guess.el (riece-guess-channel-try-functions): Default to + nil. + (riece-default-guess-channel): Abolish. + (riece-command-guess-switch-to-channel): Reconstruct + riece-guess-candidates when it is empty. + 2003-08-28 Daiki Ueno * riece-highlight.el (riece-dialogue-change-face): Use defvar to diff --git a/lisp/riece-guess.el b/lisp/riece-guess.el index 3112ce9..2a5371d 100644 --- a/lisp/riece-guess.el +++ b/lisp/riece-guess.el @@ -32,18 +32,17 @@ :prefix "riece-" :group 'riece) -(defcustom riece-guess-channel-try-functions - '(riece-default-guess-channel) +(defcustom riece-guess-channel-try-functions nil "Functions which returns a list of channels the user wants to switch." :type '(repeat function) :group 'riece-guess) (defvar riece-current-channels) -(defun riece-default-guess-channel () - (delq nil (copy-sequence riece-current-channels))) (defun riece-guess-candidates () - "Call \\[riece-guess-channel-try-functions] in turn and merge the results." + "Build candidate list. +This function calls \\[riece-guess-channel-try-functions] in turn and +merge the results." (let ((functions riece-guess-channel-try-functions) candidates) (while functions @@ -51,11 +50,21 @@ (nconc candidates (delq nil (mapcar (lambda (channel) - (if (riece-identity-member channel candidates) - nil + (unless (riece-identity-member + channel candidates) channel)) (funcall (car functions))))) functions (cdr functions))) + ;; Merge the default. + (setq candidates + (nconc candidates + (delq nil (mapcar + (lambda (channel) + (if (and channel + (not (riece-identity-member + channel candidates))) + channel)) + riece-current-channels)))) candidates)) (defvar riece-guess-candidates nil) @@ -63,7 +72,8 @@ (defun riece-command-guess-switch-to-channel () "Try to switch to the channel where the user is interested in." (interactive) - (unless (eq last-command this-command) + (unless (and (eq last-command this-command) + riece-guess-candidates) (setq riece-guess-candidates (riece-guess-candidates))) (unless riece-guess-candidates (error "No channel"))