Subject: Re: bug#77452: 31.0.50; Wide characters in left margin on ttys

From: Eli Zaretskii <[email-masked]>
Date: Wed, 02 Apr 2025 15:38:02 +0300

> From: Gerd Möllmann <[email-masked]>
> Date: Wed, 02 Apr 2025 11:52:46 +0200
> 
> in emacs -Q -nw, eval 
> 
>   (defun foo ()
>     (interactive)
>     (with-current-buffer (get-buffer-create "*foo*")
>       (setq left-margin-width 2)
>       (erase-buffer)
>       (insert "abc")
>       (insert (propertize "def" 'display '((margin left-margin) "1💡")))))
> 
> and M-x foo.
> 
> This creates a buffer "*foo*" displaying a string in a left
> margin area of width 2. The string consists of 2 characters but has a display
> width of 3 since the light bulb character has a display width of 2.
> 
>   (char-width ?💡)
>    => 2
> 
> So, writing the left margin string to the terminal advances the output
> cursor by 3 not 2. This confuses the display engine, as one can witness
> by editing in the *foo* buffer, adding new lines etc.

The problem is not the char-width of 💡 nor with advancement of the
cursor, the problem is that the string "1💡" doesn't fit in the
2-column wide margin, and Emacs should have displayed only "1", since
we cannot clip glyphs on TTY frames.

Are you going to work on fixing this long-time problem?  Or should I?