]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow using alists in ido completion and hitting TAB
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 14 Jun 2022 12:16:55 +0000 (14:16 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 14 Jun 2022 12:16:55 +0000 (14:16 +0200)
* lisp/ido.el (ido-completion-help): Allow using an alist
COMPLETIONS (bug#46091).

lisp/ido.el

index 73cd163d4652a98a75c4bd48ae1e4ab5294b5ec2..f970fce1ed2c58ebe559f418b6413a7ad4f82053 100644 (file)
@@ -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))))))