Subject: Re: bug#79059: 31.0.50; eshell-emit-prompt errors when front-sticky or rear-nonsticky properties are set to t

From: László Vaskó <[email-masked]>
Date: Tue, 22 Jul 2025 18:22:29 +0200

I've spiced up the prompt using nerd-icons, which set the rear-nonsticky property:

>            (propertize icon
>                        'face face
>                        'font-lock-face face
>                        'display `(raise ,v-adjust)
>                        'rear-nonsticky t))))
https://github.com/rainstormstudio/nerd-icons.el/blob/main/nerd-icons.el#L1368-L1372

On Tue, Jul 22, 2025, at 18:14, Jim Porter wrote:
> On 7/20/2025 3:00 AM, László Vaskó wrote:
>> Hello,
>> 
>> Since df288d2e414 (bug#74230) eshell is more careful adding text
>> properties to prompts using `eshell--append-text-property'. It's
>> implementation assumes that `get-text-property' will always return a
>> list. This is not true, as both `front-sticky' and `rear-nonsticky'
>> properties can be set to t.
>> 
>> Repro:
>> 
>> -- 8< --
>> cat <<EOF > /tmp/init-eshell-propertized-prompt.el
>> ;; -*- lexical-binding: t; -*-
>> (setq eshell-prompt-function
>>        (defun propertizing-prompt ()
>>          (setq eshell-prompt-string (propertize "test" 'rear-nonsticky t))))
>> (eshell)
>> EOF
>> emacs -Q --batch --load /tmp/init-eshell-propertized-prompt.el
>> -- 8< --
>
> When does this come up in practice? I think this could only happen if 
> some code specifically customizes 'eshell-prompt-function' to set the 
> stickiness properties this way. Is doing that necessary for something 
> else that I'm missing?