On Sun, Apr 13, 2025 at 7:28 AM Ship Mints <shipmints@gmail.com> wrote:
On Sun, Apr 13, 2025 at 5:52 AM Eli Zaretskii <eliz@gnu.org> wrote:
> From: Ship Mints <shipmints@gmail.com>
> Date: Fri, 11 Apr 2025 11:32:18 -0400
>
> -Q reproducer
>
> ;; The culprit appears to be `redisplay--update-cursor-face-highlight'
> (setq debug-on-error t)
> (cursor-face-highlight-mode)
> (save-excursion (insert (propertize "cursor face text\n"
>                                     'cursor-face 'region)))
> (narrow-to-region (pos-bol) (pos-eol))
> (setq unread-command-events (mapcar #'identity
>                                     (kbd "C-n")))

Thanks, does the below fix it?

diff --git a/lisp/simple.el b/lisp/simple.el
index ee09a6f..9e9dd15 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -7265,7 +7265,7 @@ redisplay--update-cursor-face-highlight
               (pt (window-point window))
               (cursor-face (get-text-property pt 'cursor-face)))
         (let* ((start (previous-single-property-change
-                       (1+ pt) 'cursor-face nil (point-min)))
+                       (min (1+ pt) (point-min)) 'cursor-face nil (point-min)))
                (end (next-single-property-change
                      pt 'cursor-face nil (point-max)))
                (new (redisplay--highlight-overlay-function

Not quite.  That winds up coalescing the highlight across lines rather than just the line with the cursor.

This works better but I'm not sure if this is in the true spirit of the intended use as the property change may not be floored to bol?

diff --git a/lisp/simple.el b/lisp/simple.el
index 7037158df8d..9ebe9a0ba34 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -7259,7 +7259,7 @@ redisplay--update-cursor-face-highlight
               (pt (window-point window))
               (cursor-face (get-text-property pt 'cursor-face)))
         (let* ((start (previous-single-property-change
-                       (1+ pt) 'cursor-face nil (point-min)))
+                       (min (1+ pt) (pos-bol)) 'cursor-face nil (point-min)))
                (end (next-single-property-change
                      pt 'cursor-face nil (point-max)))
                (new (redisplay--highlight-overlay-function

I tested my experiment above in my own reproducer and it doesn't work there, though it worked in a larger case with a lot more text, I didn't look further.

Your recommendation doesn't work in the reproducer and it signals as before.