On Fri, Apr 25, 2025 at 10:58 AM Ship Mints wrote: > On Fri, Apr 25, 2025 at 9:51 AM Ship Mints wrote: > >> On Sun, Apr 13, 2025 at 5:52 AM Eli Zaretskii wrote: >> >>> > From: Ship Mints >>> > 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 >>> >> >> Eli, possible to apply the above soon? >> > > Actually, I'm back to thinking this is better or the effect is that the > whole buffer can wind up being unexpectedly highlighted: > > (min (1+ pt) (pos-bol)) 'cursor-face nil > (point-min))) > To be clearer: The original condition (1+ pt) 'cursor-face nil (point-min))) works fine in a wide buffer. The condition (min (1+ pt) (point-min)) 'cursor-face nil (point-min))) in a wide buffer winds up highlighting all the way to point-min in a buffer where every line has 'cursor-face which is undesirable. I've experimented and tried to have 'cursor-face span only bol to eol-2 and that is confirmed visually, yet the entire buffer before the current line is highlighted in the cursor face. mouse-face highlighting on the same lines (the text properties are applied all together) works properly whether the buffer is narrowed or wide. I suppose it's technically doing the correct thing if every single line in a buffer has a cursor-face property? How does one differentiate one line from another, if so, and why does mouse-face work differently?