Avoid errors in 'icomplete-vertical-mode'
authorEli Zaretskii <eliz@gnu.org>
Sat, 20 Jul 2024 05:58:39 +0000 (08:58 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 20 Jul 2024 05:58:39 +0000 (08:58 +0300)
* lisp/minibuffer.el (completion--hilit-from-re): Avoid signaling
an error if STRING does not match REGEXP.  Fix doc string and
indentation.  (Bug#72176)

lisp/minibuffer.el

index 0f6e351875885e692f27f12901135aa43eff2f04..baed4edcf8969e0eab416935b06a768e4e808756 100644 (file)
@@ -4051,24 +4051,26 @@ details."
 
 (defun completion--hilit-from-re (string regexp &optional point-idx)
   "Fontify STRING using REGEXP POINT-IDX.
-`completions-common-part' and `completions-first-difference' are
-used.  POINT-IDX is the position of point in the presumed \"PCM\"
-pattern that was used to generate derive REGEXP from."
-(let* ((md (and regexp (string-match regexp string) (cddr (match-data t))))
-       (pos (if point-idx (match-beginning point-idx) (match-end 0)))
-       (me (and md (match-end 0)))
-       (from 0))
-  (while md
-    (add-face-text-property from (pop md) 'completions-common-part nil string)
-    (setq from (pop md)))
-  (if (> (length string) pos)
-      (add-face-text-property
-       pos (1+ pos)
-       'completions-first-difference
-       nil string))
-  (unless (or (not me) (= from me))
-    (add-face-text-property from me 'completions-common-part nil string))
-  string))
+Uses `completions-common-part' and `completions-first-difference'
+faces to fontify STRING.
+POINT-IDX is the position of point in the presumed \"PCM\" pattern
+from which REGEXP was generated."
+  (let* ((md (and regexp (string-match regexp string) (cddr (match-data t))))
+         (pos (if point-idx (match-beginning point-idx) (match-end 0)))
+         (me (and md (match-end 0)))
+         (from 0))
+    (while md
+      (add-face-text-property from (pop md)
+                              'completions-common-part nil string)
+      (setq from (pop md)))
+    (if (and (numberp pos) (> (length string) pos))
+        (add-face-text-property
+         pos (1+ pos)
+         'completions-first-difference
+         nil string))
+    (unless (or (not me) (= from me))
+      (add-face-text-property from me 'completions-common-part nil string))
+    string))
 
 (defun completion--flex-score-1 (md-groups match-end len)
   "Compute matching score of completion.