From 9b318d5c58fef6faf344f0377cbf169b5e1f0e09 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Sun, 4 Jul 2021 04:38:35 +0300 Subject: [PATCH] Speed up fido-mode * lisp/icomplete.el (icomplete-completions): Speed up fido-mode (bug#48841). --- lisp/icomplete.el | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lisp/icomplete.el b/lisp/icomplete.el index 26698c43cfd..576fced015a 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -859,13 +859,16 @@ matches exist." (base-size (prog1 (cdr last) (if last (setcdr last nil)))) (most-try - (if (and base-size (> base-size 0)) + ;; icomplete-hide-common-prefix logic is used + ;; unconditionally when there is single match. + (when (or icomplete-hide-common-prefix (not (cdr comps))) + (if (and base-size (> base-size 0)) + (completion-try-completion + name candidates predicate (length name) md) + ;; If the `comps' are 0-based, the result should be + ;; the same with `comps'. (completion-try-completion - name candidates predicate (length name) md) - ;; If the `comps' are 0-based, the result should be - ;; the same with `comps'. - (completion-try-completion - name comps nil (length name) md))) + name comps nil (length name) md)))) (most (if (consp most-try) (car most-try) (if most-try (car comps) ""))) ;; Compare name and most, so we can determine if name is -- 2.39.2