From 5761a1a3939e23d8e8c725241dd9398a12f191b0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Fri, 8 Nov 2019 00:11:34 +0000 Subject: [PATCH] Nudge icomplete-mode a little closer to fido-mode * lisp/icomplete.el (icomplete-completions): Don't use ellipsis when truncating determ in fido-mode. Highlight the center part of determ with icomplete-first-match. --- lisp/icomplete.el | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lisp/icomplete.el b/lisp/icomplete.el index 40f4f0bc688..a7f9086d828 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -572,6 +572,13 @@ matches exist." (compare (compare-strings name nil nil most nil nil completion-ignore-case)) (ellipsis (if (char-displayable-p ?…) "…" "...")) + ;; `determ' is what we "determined" to be the thing that + ;; TAB will complete to. Also, if we're working with a + ;; large prefix (like when finding files), we want to + ;; truncate the common prefix away. `determ-ellipsis' + ;; says if we should do it with an `ellipsis'. Icomplete + ;; uses one, Ido doesn't. + (determ-ellipsis (if fido-mode "" ellipsis)) (determ (unless (or (eq t compare) (eq t most-try) (= (setq compare (1- (abs compare))) (length most))) @@ -582,8 +589,10 @@ matches exist." (substring most compare)) ;; Don't bother truncating if it doesn't gain ;; us at least 2 columns. - ((< compare (+ 2 (string-width ellipsis))) most) - (t (concat ellipsis (substring most compare)))) + ((< compare (+ 2 (string-width determ-ellipsis))) + most) + (t (concat determ-ellipsis + (substring most compare)))) close-bracket))) ;;"-prospects" - more than one candidate (prospects-len (+ (string-width @@ -664,6 +673,8 @@ matches exist." (mapconcat 'identity prospects icomplete-separator) (and limit (concat icomplete-separator ellipsis)) "}") + (put-text-property 1 (1- (length determ)) + 'face 'icomplete-first-match determ) (concat determ " [Matched]")))))) ;;; Iswitchb compatibility -- 2.39.5