# HG changeset patch # User Katsumi Yamaoka # Date 1286327372 0 # Node ID 9d935b7bf464f4b5e06cfbbb9b7fae3f6e8dfdfd # Parent 5a595f515d1cd517a8e117858fc713b9aed49796 Eliminate `remove-if-not' that is a cl function. gnus-util.el (gnus-remove-if): Allow hash table. gnus-util.el (gnus-remove-if-not): New function. gnus-art.el (gnus-mime-view-part-as-type): Replace remove-if-not with gnus-remove-if-not. gnus-score.el (gnus-summary-score-effect): Replace remove-if-not with gnus-remove-if-not. gnus-sum.el (gnus-read-move-group-name): Replace remove-if-not with gnus-remove-if-not. gnus-group.el (gnus-group-completing-read): Regard collection as a hash table if it is not a list. diff -r 5a595f515d1c -r 9d935b7bf464 lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Tue Oct 05 23:42:01 2010 +0000 +++ b/lisp/gnus/ChangeLog Wed Oct 06 01:09:32 2010 +0000 @@ -1,3 +1,16 @@ +2010-10-06 Katsumi Yamaoka + + * gnus-util.el (gnus-remove-if): Allow hash table. + (gnus-remove-if-not): New function. + + * gnus-art.el (gnus-mime-view-part-as-type) + * gnus-score.el (gnus-summary-score-effect) + * gnus-sum.el (gnus-read-move-group-name): + Replace remove-if-not with gnus-remove-if-not. + + * gnus-group.el (gnus-group-completing-read): + Regard collection as a hash table if it is not a list. + 2010-10-05 Lars Magne Ingebrigtsen * shr.el (shr-render-td): Allow blank/missing s. diff -r 5a595f515d1c -r 9d935b7bf464 lisp/gnus/gnus-art.el --- a/lisp/gnus/gnus-art.el Tue Oct 05 23:42:01 2010 +0000 +++ b/lisp/gnus/gnus-art.el Wed Oct 06 01:09:32 2010 +0000 @@ -5139,7 +5139,7 @@ (let ((default (gnus-mime-view-part-as-type-internal))) (gnus-completing-read "View as MIME type" - (remove-if-not pred (mailcap-mime-types)) + (gnus-remove-if-not pred (mailcap-mime-types)) nil nil nil (car default))))) (gnus-article-check-buffer) diff -r 5a595f515d1c -r 9d935b7bf464 lisp/gnus/gnus-group.el --- a/lisp/gnus/gnus-group.el Tue Oct 05 23:42:01 2010 +0000 +++ b/lisp/gnus/gnus-group.el Wed Oct 06 01:09:32 2010 +0000 @@ -2163,23 +2163,33 @@ (goto-char start))))) (defun gnus-group-completing-read (&optional prompt collection - require-match initial-input hist def) + require-match initial-input hist + def) "Read a group name with completion. Non-ASCII group names are allowed. The arguments are the same as `completing-read' except that COLLECTION and HIST default to `gnus-active-hashtb' and `gnus-group-history' -respectively if they are omitted." - (let* ((collection (or collection (or gnus-active-hashtb [0]))) - (choices (mapcar (lambda (symbol) - (let ((group (symbol-name symbol))) - (if (string-match "[^\000-\177]" group) - (gnus-group-decoded-name group) - group))) - (remove-if-not 'symbolp collection))) - (group - (gnus-completing-read (or prompt "Group") choices - require-match initial-input - (or hist 'gnus-group-history) - def))) +respectively if they are omitted. Regards COLLECTION as a hash table +if it is not a list." + (or collection (setq collection gnus-active-hashtb)) + (let (choices group) + (if (listp collection) + (dolist (symbol collection) + (setq group (symbol-name symbol)) + (push (if (string-match "[^\000-\177]" group) + (gnus-group-decoded-name group) + group) + choices)) + (mapatoms (lambda (symbol) + (setq group (symbol-name symbol)) + (push (if (string-match "[^\000-\177]" group) + (gnus-group-decoded-name group) + group) + choices)) + collection)) + (setq group (gnus-completing-read (or prompt "Group") (nreverse choices) + require-match initial-input + (or hist 'gnus-group-history) + def)) (if (symbol-value (intern-soft group collection)) group (mm-encode-coding-string group (gnus-group-name-charset nil group))))) diff -r 5a595f515d1c -r 9d935b7bf464 lisp/gnus/gnus-score.el --- a/lisp/gnus/gnus-score.el Tue Oct 05 23:42:01 2010 +0000 +++ b/lisp/gnus/gnus-score.el Wed Oct 06 01:09:32 2010 +0000 @@ -916,7 +916,7 @@ (interactive (list (gnus-completing-read "Header" (mapcar 'car - (remove-if-not + (gnus-remove-if-not (lambda (x) (fboundp (nth 2 x))) gnus-header-index)) t) diff -r 5a595f515d1c -r 9d935b7bf464 lisp/gnus/gnus-sum.el --- a/lisp/gnus/gnus-sum.el Tue Oct 05 23:42:01 2010 +0000 +++ b/lisp/gnus/gnus-sum.el Wed Oct 06 01:09:32 2010 +0000 @@ -11926,11 +11926,12 @@ ((null split-name) (gnus-group-completing-read prom - (remove-if-not 'gnus-valid-move-group-p gnus-active-hashtb) + (gnus-remove-if-not 'gnus-valid-move-group-p gnus-active-hashtb t) nil prefix nil default)) ((= 1 (length split-name)) (gnus-group-completing-read - prom (remove-if-not 'gnus-valid-move-group-p gnus-active-hashtb) + prom + (gnus-remove-if-not 'gnus-valid-move-group-p gnus-active-hashtb t) nil prefix 'gnus-group-history (car split-name))) (t (gnus-completing-read diff -r 5a595f515d1c -r 9d935b7bf464 lisp/gnus/gnus-util.el --- a/lisp/gnus/gnus-util.el Tue Oct 05 23:42:01 2010 +0000 +++ b/lisp/gnus/gnus-util.el Wed Oct 06 01:09:32 2010 +0000 @@ -1307,13 +1307,40 @@ (with-current-buffer gnus-group-buffer (eq major-mode 'gnus-group-mode)))) -(defun gnus-remove-if (predicate list) - "Return a copy of LIST with all items satisfying PREDICATE removed." +(defun gnus-remove-if (predicate sequence &optional hash-table-p) + "Return a copy of SEQUENCE with all items satisfying PREDICATE removed. +SEQUENCE should be a list, a vector, or a string. Returns always a list. +If HASH-TABLE-P is non-nil, regards SEQUENCE as a hash table." (let (out) - (while list - (unless (funcall predicate (car list)) - (push (car list) out)) - (setq list (cdr list))) + (if hash-table-p + (mapatoms (lambda (symbol) + (unless (funcall predicate symbol) + (push symbol out))) + sequence) + (unless (listp sequence) + (setq sequence (append sequence nil))) + (while sequence + (unless (funcall predicate (car sequence)) + (push (car sequence) out)) + (setq sequence (cdr sequence)))) + (nreverse out))) + +(defun gnus-remove-if-not (predicate sequence &optional hash-table-p) + "Return a copy of SEQUENCE with all items not satisfying PREDICATE removed. +SEQUENCE should be a list, a vector, or a string. Returns always a list. +If HASH-TABLE-P is non-nil, regards SEQUENCE as a hash table." + (let (out) + (if hash-table-p + (mapatoms (lambda (symbol) + (when (funcall predicate symbol) + (push symbol out))) + sequence) + (unless (listp sequence) + (setq sequence (append sequence nil))) + (while sequence + (when (funcall predicate (car sequence)) + (push (car sequence) out)) + (setq sequence (cdr sequence)))) (nreverse out))) (if (fboundp 'assq-delete-all)