GNU bug report logs -
#65105
Reusing the same string as 'display on consecutive characters evades display
Previous Next
Reported by: JD Smith <jdtsmith <at> gmail.com>
Date: Sat, 5 Aug 2023 18:36:01 UTC
Severity: normal
Tags: notabug
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #13 received at 65105 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
> On Aug 5, 2023, at 3:03 PM, Eli Zaretskii <eliz <at> gnu.org> wrote:
>
> tags 65105 notabug
> thanks
>
>> From: JD Smith <jdtsmith <at> gmail.com>
>> Date: Sat, 5 Aug 2023 14:35:23 -0400
>>
>> Evaluate:
>>
>> (let ((s1 "test1")
>> (s2 "test2"))
>> (insert "\n"
>> (propertize " " 'display s1)
>> (propertize " " 'display s1)
>> (propertize " " 'display s2)
>> (propertize " " 'display s1)))
>>
>>
>> The first space display does not take effect, since the s1 string is used for two consecutive characters. This has a practical impact for font-lock backends that use the ‘display text-property and would like to minimize string allocation.
>
> Emacs cannot distinguish between two consecutive characters having
> each a text property with the same value, and two characters having
> the same property. If you think about this for a moment, you will
> understand why: we use intervals for text properties, so two adjacent
> intervals with the identical property values and one interval with
> that same value are indistinguishable (and in fact Emacs optimizes
> this during GC by making just one interval from these two).
>
> This is not a bug.
Aha, thanks. It does make sense from an optimization standpoint to “gang” properties in this manner. Are you aware of any approach that allow re-using a string for ‘display, but permits consecutive intervals to remain distinct?
[Message part 2 (text/html, inline)]
This bug report was last modified 1 year and 290 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.