Subject: Re: bug#59841: 29.0.50; 'before-string' text property doesn't work

From: Eli Zaretskii <[email-masked]>
Date: Mon, 05 Dec 2022 21:41:42 +0200

> Date: Tue, 06 Dec 2022 00:30:52 +0600
> From:  Akib Azmain Turja via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <[email-masked]>
> 
> The 'Display Margins' node of Emacs Lisp manual says to put
> 'before-string' on text to use the marginal area (is this the correct
> term?) while not altering buffer text.  But 'before-string' text
> property doesn't work.
> 
> Steps:  1. Open a clean fundamental mode buffer.
>         2. (insert (propertize "foo" 'before-string "bar"))
>         3. The buffer shows only "foo", but not "bar" before it.

The code is incorrect: 'before-string' is an overlay property, not a text
property.  So you need to define an overlay with a 'before-string' property
whose value is a string, and put a 'display' property on that string.

And if you want the 'display' property to show text in the margin, you need
also to use set-window-margins to setup the margin.