GNU bug report logs - #79059
31.0.50; eshell-emit-prompt errors when front-sticky or rear-nonsticky properties are set to t

Previous Next

Package: emacs;

Reported by: László Vaskó <hello <at> vlaci.email>

Date: Sun, 20 Jul 2025 10:51:04 UTC

Severity: normal

Found in version 31.0.50

Done: Jim Porter <jporterbugs <at> gmail.com>

To reply to this bug, email your comments to 79059 AT debbugs.gnu.org.
There is no need to reopen the bug first.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#79059; Package emacs. (Sun, 20 Jul 2025 10:51:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to László Vaskó <hello <at> vlaci.email>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 20 Jul 2025 10:51:04 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: László Vaskó <hello <at> vlaci.email>
To: bug-gnu-emacs <at> gnu.org
Subject: 31.0.50; eshell-emit-prompt errors when front-sticky or rear-nonsticky
 properties are set to t
Date: Sun, 20 Jul 2025 12:00:55 +0200
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< --

Output:

    Loading eshell-alias...
    Loading eshell-alias...done
    Loading eshell-banner...
    Loading eshell-banner...done
    Loading eshell-basic...
    Loading eshell-basic...done
    Loading eshell-cmpl...
    Loading eshell-cmpl...done
    Loading eshell-extpipe...
    Loading eshell-extpipe...done
    Loading eshell-glob...
    Loading eshell-glob...done
    Loading eshell-hist...
    Loading eshell-hist...done
    Loading eshell-ls...
    Loading eshell-ls...done
    Loading eshell-pred...
    Loading eshell-pred...done
    Loading eshell-prompt...
    Loading eshell-prompt...done
    Loading eshell-script...
    Loading eshell-script...done
    Loading eshell-term...
    Loading eshell-term...done
    Loading eshell-unix...
    Loading eshell-unix...done

    Error: wrong-type-argument (sequencep t)
      eshell--append-text-property(0 4 rear-nonsticky (read-only font-lock-face field) #("test" 0 4 (front-sticky (read-only font-lock-face field) font-lock-face eshell-prompt read-only t field prompt rear-nonsticky t)))
      eshell-emit-prompt()
      run-hooks(eshell-post-command-hook)
      eshell-mode()
      eshell()
      load-with-code-conversion("/tmp/init-eshell-propertized-prompt.el" "/tmp/init-eshell-propertized-prompt.el" nil t)
      command-line-1(("--load" "/tmp/init-eshell-propertized-prompt.el"))
      command-line()
      normal-top-level()

    debug-early-backtrace...done
    Wrong type argument: sequencep, t


In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.49, cairo version 1.18.4)
Repository revision: 382123e69e2c0cae39e44f9b72ca3674eaec2ad1
Repository branch: master
System Description: NixOS 25.11 (Xantusia)

Configured using:
'configure
--prefix=/nix/store/463a7h9nwlk9yzni8s1cb7dhvi8k2dd0-emacs-igc-pgtk-20250716.0
--disable-build-details --with-modules --with-pgtk
--with-compress-install --with-toolkit-scroll-bars
--with-native-compilation --without-imagemagick --with-mailutils
--without-small-ja-dic --with-tree-sitter --without-xinput2
--without-xwidgets --with-dbus --with-selinux --with-mps=yes'

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LIBSELINUX LIBSYSTEMD LIBXML2 MODULES MPS NATIVE_COMP NOTIFY INOTIFY
PDUMPER PGTK PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM GTK3 ZLIB

Important settings:
  value of $LANG: hu_HU.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Eshell

Minor modes in effect:
  eshell-prompt-mode: t
  eshell-pred-mode: t
  eshell-hist-mode: t
  eshell-cmpl-mode: t
  eshell-proc-mode: t
  eshell-arg-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug lisp-mnt message mailcap yank-media puny
dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg
rfc6068 epg-config gnus-util time-date mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils compile comp-run
comp-common em-unix em-term term disp-table shell ehelp em-script
em-prompt text-property-search em-pred em-ls em-hist em-glob rx
em-extpipe em-cmpl em-dirs em-basic em-banner em-alias esh-mode esh-var
eshell esh-cmd generator cl-loaddefs cl-lib esh-ext esh-proc esh-opt
esh-io byte-opt gv bytecomp byte-compile esh-arg pcomplete comint subr-x
ansi-osc ansi-color ring esh-module esh-module-loaddefs esh-util files-x
rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/pgtk-win pgtk-win
term/common-win touch-screen pgtk-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify
dynamic-setting system-font-setting font-render-setting cairo gtk pgtk
multi-tty move-toolbar make-network-process tty-child-frames
native-compile mps emacs)

Memory information:
((conses 24 0 0) (symbols 56 0 0) (strings 40 0 0) (string-bytes 1 0)
(vectors 24 0) (vector-slots 8 0 0) (floats 24 0 0)
(intervals 64 0 0) (buffers 1072 0))

--

László Vaskó




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79059; Package emacs. (Tue, 22 Jul 2025 11:23:02 GMT) Full text and rfc822 format available.

Message #8 received at 79059 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: László Vaskó <hello <at> vlaci.email>, Jim Porter
 <jporterbugs <at> gmail.com>
Cc: 79059 <at> debbugs.gnu.org
Subject: Re: bug#79059: 31.0.50;
 eshell-emit-prompt errors when front-sticky or rear-nonsticky
 properties are set to t
Date: Tue, 22 Jul 2025 14:22:06 +0300
> Date: Sun, 20 Jul 2025 12:00:55 +0200
> From: László Vaskó <hello <at> vlaci.email>
> 
> 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< --
> 
> Output:
> 
>     Loading eshell-alias...
>     Loading eshell-alias...done
>     Loading eshell-banner...
>     Loading eshell-banner...done
>     Loading eshell-basic...
>     Loading eshell-basic...done
>     Loading eshell-cmpl...
>     Loading eshell-cmpl...done
>     Loading eshell-extpipe...
>     Loading eshell-extpipe...done
>     Loading eshell-glob...
>     Loading eshell-glob...done
>     Loading eshell-hist...
>     Loading eshell-hist...done
>     Loading eshell-ls...
>     Loading eshell-ls...done
>     Loading eshell-pred...
>     Loading eshell-pred...done
>     Loading eshell-prompt...
>     Loading eshell-prompt...done
>     Loading eshell-script...
>     Loading eshell-script...done
>     Loading eshell-term...
>     Loading eshell-term...done
>     Loading eshell-unix...
>     Loading eshell-unix...done
> 
>     Error: wrong-type-argument (sequencep t)
>       eshell--append-text-property(0 4 rear-nonsticky (read-only font-lock-face field) #("test" 0 4 (front-sticky (read-only font-lock-face field) font-lock-face eshell-prompt read-only t field prompt rear-nonsticky t)))
>       eshell-emit-prompt()
>       run-hooks(eshell-post-command-hook)
>       eshell-mode()
>       eshell()
>       load-with-code-conversion("/tmp/init-eshell-propertized-prompt.el" "/tmp/init-eshell-propertized-prompt.el" nil t)
>       command-line-1(("--load" "/tmp/init-eshell-propertized-prompt.el"))
>       command-line()
>       normal-top-level()
> 
>     debug-early-backtrace...done
>     Wrong type argument: sequencep, t

Thanks.

Jim, could you please look into this?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79059; Package emacs. (Tue, 22 Jul 2025 16:15:02 GMT) Full text and rfc822 format available.

Message #11 received at 79059 <at> debbugs.gnu.org (full text, mbox):

From: Jim Porter <jporterbugs <at> gmail.com>
To: László Vaskó <hello <at> vlaci.email>, 79059 <at> debbugs.gnu.org
Subject: Re: bug#79059: 31.0.50; eshell-emit-prompt errors when front-sticky
 or rear-nonsticky properties are set to t
Date: Tue, 22 Jul 2025 09:14:46 -0700
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?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79059; Package emacs. (Tue, 22 Jul 2025 19:54:02 GMT) Full text and rfc822 format available.

Message #14 received at 79059 <at> debbugs.gnu.org (full text, mbox):

From: László Vaskó <hello <at> vlaci.email>
To: "Jim Porter" <jporterbugs <at> gmail.com>, 79059 <at> debbugs.gnu.org
Subject: Re: bug#79059: 31.0.50; eshell-emit-prompt errors when front-sticky or
 rear-nonsticky properties are set to t
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?




Reply sent to Jim Porter <jporterbugs <at> gmail.com>:
You have taken responsibility. (Wed, 23 Jul 2025 05:29:02 GMT) Full text and rfc822 format available.

Notification sent to László Vaskó <hello <at> vlaci.email>:
bug acknowledged by developer. (Wed, 23 Jul 2025 05:29:02 GMT) Full text and rfc822 format available.

Message #19 received at 79059-done <at> debbugs.gnu.org (full text, mbox):

From: Jim Porter <jporterbugs <at> gmail.com>
To: László Vaskó <hello <at> vlaci.email>,
 79059-done <at> debbugs.gnu.org
Subject: Re: bug#79059: 31.0.50; eshell-emit-prompt errors when front-sticky
 or rear-nonsticky properties are set to t
Date: Tue, 22 Jul 2025 22:27:58 -0700
On 7/22/2025 9:22 AM, László Vaskó wrote:
> 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
Thanks for the context. Merged a fix for this as 0d752f15b86, so closing 
this bug now (though if you still have any issues, let me know and I'll 
try to address them).




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#79059; Package emacs. (Thu, 24 Jul 2025 06:13:02 GMT) Full text and rfc822 format available.

Message #22 received at 79059-done <at> debbugs.gnu.org (full text, mbox):

From: László Vaskó <hello <at> vlaci.email>
To: "Jim Porter" <jporterbugs <at> gmail.com>, 79059-done <at> debbugs.gnu.org
Subject: Re: bug#79059: 31.0.50; eshell-emit-prompt errors when front-sticky or
 rear-nonsticky properties are set to t
Date: Wed, 23 Jul 2025 15:20:44 +0200
[Message part 1 (text/plain, inline)]
I can confirm that the fix works.
Thank you very much!

On Wed, Jul 23, 2025, at 07:27, Jim Porter wrote:
> On 7/22/2025 9:22 AM, László Vaskó wrote:
> > 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
> Thanks for the context. Merged a fix for this as 0d752f15b86, so closing 
> this bug now (though if you still have any issues, let me know and I'll 
> try to address them).
> 
[Message part 2 (text/html, inline)]

This bug report was last modified 22 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.