summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2022-06-14 14:16:55 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2022-06-14 14:16:55 +0200
commit441f081a643d6ad61208409fdcffe3a8a018f8ff (patch)
tree3cd2ef44d2ec76c6219b66494e0f0a3cc786cf02 /lisp
parent706ef0ae932a68b8eca86678d0cc627854c25c15 (diff)
downloademacs-441f081a643d6ad61208409fdcffe3a8a018f8ff.tar.gz
emacs-441f081a643d6ad61208409fdcffe3a8a018f8ff.tar.bz2
emacs-441f081a643d6ad61208409fdcffe3a8a018f8ff.zip
Allow using alists in ido completion and hitting TAB
* lisp/ido.el (ido-completion-help): Allow using an alist COMPLETIONS (bug#46091).
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ido.el41
1 files changed, 24 insertions, 17 deletions
diff --git a/lisp/ido.el b/lisp/ido.el
index 73cd163d465..f970fce1ed2 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -3976,23 +3976,30 @@ If `ido-change-word-sub' cannot be found in WORD, return nil."
(setq display-it t))
(if (and ido-completion-buffer display-it)
(with-output-to-temp-buffer ido-completion-buffer
- (let ((completion-list (sort
- (cond
- (ido-directory-too-big
- (message "Reading directory...")
- (setq ido-directory-too-big nil
- ido-ignored-list nil
- ido-cur-list (ido-all-completions)
- ido-rescan t)
- (ido-set-matches)
- (or ido-matches ido-cur-list))
- (ido-use-merged-list
- (ido-flatten-merged-list (or ido-matches ido-cur-list)))
- ((or full-list ido-completion-buffer-all-completions)
- (ido-all-completions))
- (t
- (copy-sequence (or ido-matches ido-cur-list))))
- #'ido-file-lessp)))
+ (let* ((comps
+ (cond
+ (ido-directory-too-big
+ (message "Reading directory...")
+ (setq ido-directory-too-big nil
+ ido-ignored-list nil
+ ido-cur-list (ido-all-completions)
+ ido-rescan t)
+ (ido-set-matches)
+ (or ido-matches ido-cur-list))
+ (ido-use-merged-list
+ (ido-flatten-merged-list (or ido-matches ido-cur-list)))
+ ((or full-list ido-completion-buffer-all-completions)
+ (ido-all-completions))
+ (t
+ (copy-sequence (or ido-matches ido-cur-list)))))
+ (completion-list
+ ;; If we have an alist COMPLETIONS, transform to a
+ ;; simple list first.
+ (sort (if (and (consp comps)
+ (consp (car comps)))
+ (mapcar #'car comps)
+ comps)
+ #'ido-file-lessp)))
;;(add-hook 'completion-setup-hook #'completion-setup-function)
(display-completion-list completion-list))))))