Commit 61c47336 authored by Katsumi Yamaoka's avatar Katsumi Yamaoka
Browse files

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.
parent a0ec382a
2010-10-06 Katsumi Yamaoka <yamaoka@jpl.org>
* 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 <larsi@gnus.org>
 
* shr.el (shr-render-td): Allow blank/missing <TD>s.
......
......@@ -5139,7 +5139,7 @@ available media-types."
(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)
......
......@@ -2163,23 +2163,33 @@ be permanent."
(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)))))
......
......@@ -916,7 +916,7 @@ EXTRA is the possible non-standard header."
(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)
......
......@@ -11926,11 +11926,12 @@ save those articles instead."
((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
......
......@@ -1307,13 +1307,40 @@ This function saves the current buffer."
(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)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment