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.
This commit is contained in:
parent
a0ec382af2
commit
61c47336fe
6 changed files with 75 additions and 24 deletions
|
@ -1,3 +1,16 @@
|
|||
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue