GNU bug report logs -
#79275
30.2.50; overlay line-prefix display property fighting with text display property
Previous Next
Full log
View this message in rfc822 format
> From: "J.D. Smith" <jdtsmith <at> gmail.com>
> Cc: 79275 <at> debbugs.gnu.org
> Date: Thu, 21 Aug 2025 15:46:03 -0400
>
> Eli Zaretskii <eliz <at> gnu.org> writes:
>
> > Please try the patch below, I hope it fixes both of the situations you
> > described.
>
> Your latest patch indeed fixes this display conflict between overlays
> and text properties at both the front of a fringe-displaying overlay and
> in its middle. The code I used to test:
>
> ;; Insert at least 4 blank lines above this and evaluate
> (progn
> (delete-all-overlays)
> (let ((ov (make-overlay 1 5)))
> (overlay-put ov 'line-prefix (propertize "SHOULDNOTSEETHIS" 'display
> '(left-fringe right-triangle success))))
> (put-text-property 1 2 'display ">testing front-fringe display\n")
> (put-text-property 3 4 'display ">testing mid-fringe display\n"))
>
> Thanks very much for your work on this. I know how challenging it can
> be to hunt down subtle bugs in the redisplay code. I appreciate all the
> time and energy you volunteer to continuously improve Emacs.
Thanks for testing. I will run a few more tests before installing
this: as you could see, this bug revealed a couple of serious design
blunders in how line/wrap-prefix was implemented, so I'd like to make
sure the changes didn't break anything.
What astonished me the most was the use of it->object to decide
whether we iterate a buffer or a string, something that I learned long
ago (and forgot) to be a very bad idea, see this comment in
dispextern.h:
Do NOT use !BUFFERP (it.object) as a test whether we are
iterating over a string; use STRINGP (it.string) instead.
This bug report was last modified 20 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.