]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix "first-differente" face in completion-pcm--hilit-commonality scratch/bug-42149-funny-pcm-completion-scores
authorJoão Távora <joaotavora@gmail.com>
Tue, 29 Dec 2020 13:31:46 +0000 (13:31 +0000)
committerJoão Távora <joaotavora@gmail.com>
Tue, 29 Dec 2020 13:31:46 +0000 (13:31 +0000)
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 <dario.gjorgjevski@gmail.com>.

* lisp/minibuffer.el (completion-pcm--hilit-commonality): Fix
occasional misplacement of completions-first-differente.

lisp/minibuffer.el

index dc37c5f44763c7fc5df07cd4c9e0f4c0590bc2ce..074d436b35513703837292af32828e8c4f382ed5 100644 (file)
@@ -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