From 03c160fb1573107586355e851c111326debfe95a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Tue, 29 Dec 2020 13:31:46 +0000 Subject: [PATCH] Fix "first-differente" face in completion-pcm--hilit-commonality Fixes: bug#42149 Depending on the position of point in the completion and the completion style being used, it may or may not make sense for this face to appear immediately after point. This patch assumes that it should appear in the first non-matched character after point, which may likely be the next one to type to disambiguate between two or more completions. Suggested by Dario Gjorgjevski . * lisp/minibuffer.el (completion-pcm--hilit-commonality): Fix occasional misplacement of completions-first-differente. --- lisp/minibuffer.el | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index dc37c5f4476..074d436b355 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -3332,11 +3332,12 @@ between 0 and 1, and with faces `completions-common-part', ;; for that extra bit of match (bug#42149). (unless (= from match-end) (funcall update-score-and-face from match-end)) - (if (> (length str) pos) - (add-face-text-property - pos (1+ pos) - 'completions-first-difference - nil str)) + (cl-loop for p from pos below (length str) + unless (eq (get-text-property p 'face str) + 'completions-common-part) + return (add-face-text-property p (1+ p) + 'completions-first-difference + nil str)) (unless (zerop (length str)) (put-text-property 0 1 'completion-score -- 2.39.2