Refactor Gnus group name extraction in group completing read

* lisp/gnus/gnus-group.el (gnus-group-completing-read): Only do the
  unibyte check once; make sure it applies to hash table keys as
  well.
This commit is contained in:
Eric Abrahamsen 2019-03-31 09:18:43 -07:00
parent 74b63d27a6
commit 03ceee0e64

View file

@ -2173,30 +2173,23 @@ Non-ASCII group names are allowed. The arguments are the same as
they are omitted. Can handle COLLECTION as a list, hash table,
or vector."
(or collection (setq collection gnus-active-hashtb))
(let (choices group)
(cond ((listp collection)
(if (symbolp (car collection))
(dolist (symbol collection)
(setq group (symbol-name symbol))
(push (if (string-match "[^\000-\177]" group)
(gnus-group-decoded-name group)
group)
choices))
(setq choices collection)))
((vectorp collection)
(mapatoms (lambda (symbol)
(setq group (symbol-name symbol))
(push (if (string-match "[^\000-\177]" group)
(gnus-group-decoded-name group)
group)
choices))
collection))
((hash-table-p collection)
(setq choices (hash-table-keys collection))))
(setq group (gnus-completing-read (or prompt "Group") (reverse choices)
require-match initial-input
(or hist 'gnus-group-history)
def))
(let* ((choices
(mapcar
(lambda (g)
(if (string-match "[^\000-\177]" g)
(gnus-group-decoded-name g)
g))
(cond ((listp collection)
collection)
((vectorp collection)
(mapatoms #'symbol-name collection))
((hash-table-p collection)
(hash-table-keys collection)))))
(group
(gnus-completing-read (or prompt "Group") (reverse choices)
require-match initial-input
(or hist 'gnus-group-history)
def)))
(unless (cond ((and (listp collection)
(symbolp (car collection)))
(member group (mapcar 'symbol-name collection)))