Subject: Re: bug#72176: 30.0.60; icomplete-vertical-mode failed to work with Error

From: Robert Pluim <[email-masked]>
Date: Thu, 18 Jul 2024 16:34:00 +0200

>>>>> On Thu, 18 Jul 2024 18:19:32 +0530, Visuwesh <[email-masked]> said:

    Visuwesh> [வியாழன் ஜூலை 18, 2024] Eli Zaretskii wrote:
    >> I cannot reproduce this, but I'm not on macOS.

    Visuwesh> I cannot reproduce this on Linux either.

I can, on Linux:

135	  xsignal2 (Qwrong_type_argument, predicate, value);
(gdb) bt
#0  wrong_type_argument (predicate=predicate@entry=XIL(0xe490), value=XIL(0)) at data.c:135
#1  0x00005555555a4fc0 in CHECK_TYPE (x=<optimized out>, predicate=XIL(0xe490), ok=0) at /home/rpluim/repos/emacs-30/src/lisp.h:780
#2  check_number_coerce_marker (x=<optimized out>) at data.c:2682
#3  0x0000555555746ae9 in arithcompare (num1=make_fixnum(25), num2=XIL(0), comparison=comparison@entry=ARITH_GRTR) at data.c:2695
#4  0x00005555557485f5 in arithcompare_driver (comparison=<optimized out>, args=<optimized out>, nargs=<optimized out>) at data.c:2819
#5  Fgtr (nargs=2, args=0x7fffffffb940) at data.c:2851
#6  0x000055555575dac8 in eval_sub (form=<optimized out>) at eval.c:2570
#7  0x000055555575e8d2 in Fif (args=XIL(0x555556a5fad3)) at eval.c:391
#8  0x000055555575dbd7 in eval_sub (form=<optimized out>) at eval.c:2549
#9  0x000055555575fba9 in Fprogn (body=<optimized out>) at eval.c:439
#10 FletX (args=<optimized out>) at eval.c:1042
#11 0x000055555575dbd7 in eval_sub (form=<optimized out>) at eval.c:2549
#12 0x000055555575ebe1 in Fprogn (body=<optimized out>) at eval.c:439
#13 funcall_lambda (fun=fun@entry=XIL(0x5555563a4ad5), nargs=nargs@entry=3, arg_vector=arg_vector@entry=0x7fffffffbc90) at eval.c:3350
#14 0x000055555575f2fc in apply_lambda (fun=XIL(0x5555563a4ad5), args=<optimized out>, count=count@entry=...) at eval.c:3215
#15 0x000055555575d8cf in eval_sub (form=<optimized out>) at eval.c:2687
#16 0x000055555575ebe1 in Fprogn (body=<optimized out>) at eval.c:439

Lisp Backtrace:
">" (0xffffb940)
"if" (0xffffba50)
"let*" (0xffffbb80)
"completion--hilit-from-re" (0xffffbc90)
0x563e4930 PVEC_CLOSURE
"funcall" (0xffffbe70)
"if" (0xffffbf60)
"completion-lazy-hilit" (0xf0dff400)
"icomplete--render-vertical" (0xf0dff280)
"icomplete-completions" (0xf0dff1d0)
"icomplete-exhibit" (0xf0dff188)
"icomplete-post-command-hook" (0xffffc180)
"read-from-minibuffer" (0xffffc5e0)

which means `pos' is nil:

(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) <== right here
      (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))

Robert
--