Package: emacs;
Reported by: Manuel Giraud <manuel <at> ledu-giraud.fr>
Date: Mon, 21 Jul 2025 08:32:01 UTC
Severity: normal
Found in version 31.0.50
To reply to this bug, email your comments to 79067 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#79067
; Package emacs
.
(Mon, 21 Jul 2025 08:32:01 GMT) Full text and rfc822 format available.Manuel Giraud <manuel <at> ledu-giraud.fr>
:bug-gnu-emacs <at> gnu.org
.
(Mon, 21 Jul 2025 08:32:01 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Manuel Giraud <manuel <at> ledu-giraud.fr> To: bug-gnu-emacs <at> gnu.org Subject: 31.0.50; Cannot async-shell-command anymore Date: Mon, 21 Jul 2025 10:30:32 +0200
Hi, From a current build, I can't call `async-shell-command' anymore. Here is my recipe: - emacs -Q - M-& ls <RET> I get the following error: shell-command: Asynchronous shell commands cannot output to current buffer In GNU Emacs 31.0.50 (build 1, x86_64-unknown-openbsd7.7) of 2025-07-21 built on computer Repository revision: 59575c32aa1e0d28c1c7113f1ce73cb64cec8e92 Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12101018 System Description: OpenBSD computer 7.7 GENERIC.MP#52 amd64 Configured using: 'configure CC=egcc CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib MAKEINFO=gmakeinfo --prefix=/home/manuel/emacs --bindir=/home/manuel/bin --with-x-toolkit=no --with-toolkit-scroll-bars=no --without-cairo --without-dbus --without-gconf --without-gsettings --without-compress-install' Configured features: FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG LCMS2 LIBOTF LIBXML2 M17N_FLT MODULES NOTIFY KQUEUE OLDXMENU PDUMPER PNG RSVG SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XDBE XFT XIM XINERAMA XINPUT2 XPM XRANDR ZLIB Important settings: value of $LC_CTYPE: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Dired by name Minor modes in effect: gnus-dired-mode: t display-time-mode: t display-battery-mode: t desktop-save-mode: t exwm-randr-mode: t server-mode: t electric-pair-mode: t override-global-mode: t repeat-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t minibuffer-regexp-mode: t buffer-read-only: 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: /home/manuel/prog/elisp/exwm/exwm hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm /home/manuel/prog/elisp/exwm/exwm-xsettings hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-xsettings /home/manuel/prog/elisp/exwm/exwm-xim hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-xim /home/manuel/prog/elisp/exwm/exwm-workspace hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-workspace /home/manuel/prog/elisp/exwm/exwm-randr hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-randr /home/manuel/prog/elisp/exwm/exwm-manage hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-manage /home/manuel/prog/elisp/exwm/exwm-layout hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-layout /home/manuel/prog/elisp/exwm/exwm-input hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-input /home/manuel/prog/elisp/exwm/exwm-floating hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-floating /home/manuel/prog/elisp/exwm/exwm-systemtray hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-systemtray /home/manuel/prog/elisp/exwm/exwm-core hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-core /home/manuel/prog/elisp/exwm/exwm-background hides /home/manuel/.emacs.d/elpa/exwm-0.34/exwm-background /home/manuel/.emacs.d/elpa/ef-themes-1.10.0/theme-loaddefs hides /home/manuel/emacs/share/emacs/31.0.50/lisp/theme-loaddefs /home/manuel/.emacs.d/elpa/idlwave-6.5.1/idlwave hides /home/manuel/emacs/share/emacs/31.0.50/lisp/obsolete/idlwave /home/manuel/.emacs.d/elpa/idlwave-6.5.1/idlw-toolbar hides /home/manuel/emacs/share/emacs/31.0.50/lisp/obsolete/idlw-toolbar /home/manuel/.emacs.d/elpa/idlwave-6.5.1/idlw-shell hides /home/manuel/emacs/share/emacs/31.0.50/lisp/obsolete/idlw-shell /home/manuel/.emacs.d/elpa/idlwave-6.5.1/idlw-help hides /home/manuel/emacs/share/emacs/31.0.50/lisp/obsolete/idlw-help /home/manuel/.emacs.d/elpa/idlwave-6.5.1/idlw-complete-structtag hides /home/manuel/emacs/share/emacs/31.0.50/lisp/obsolete/idlw-complete-structtag Features: (shadow sort mail-extr shortdoc comp-common help-fns radix-tree emacsbug lisp-mnt texinfo texinfo-loaddefs conf-mode emacs-news-mode org-indent org-agenda flyspell ispell tex-mode compile shell view hi-lock c++-ts-mode c-ts-mode mhtml-mode css-mode js c-ts-common imenu sgml-mode facemenu make-mode oc-basic org-element org-persist org-id org-element-ast inline avl-tree generator ol-eww ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect ol-docview doc-view filenotify jka-compr image-mode exif ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi gnus-icalendar org-capture org-refile org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete pcomplete comint ansi-osc ansi-color org-list org-footnote org-faces org-entities noutline outline org-version ob-emacs-lisp ob-core ob-eval org-cycle org-table ol org-fold org-fold-core org-keys oc org-loaddefs org-compat org-macs sh-script rx smie treesit executable vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view log-edit add-log pcvs-util debbugs-browse bug-reference eww vtable mule-util url-queue mm-url gnus-dired vc-git diff-mode track-changes files-x vc-dir ewoc vc vc-dispatcher format-spec time battery desktop frameset exwm-randr xcb-randr exwm exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xproto xcb-types xcb-debug server ef-themes modus-operandi-tinted-theme modus-themes zone speed-type thingatpt url-http url-auth url-gw nsm compat ytdious ring mpdired transmission color calc-bin calc-ext calc calc-loaddefs rect calc-macs supercite regi ebdb-gnus gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time iso8601 gnus-spec gnus-int gnus-range gnus-win ebdb-message message yank-media puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 gmm-utils mailheader ebdb-mua ebdb-com crm ebdb-format ebdb mailabbrev eieio-opt speedbar ezimage dframe find-func eieio-base timezone icalendar gnus nnheader gnus-util text-property-search time-date range sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils erlang-start idlwave idlwave-menus idlw-menus idlwave-bindings idlw-bindings idlwave-routine idlw-routine idlwave-scan idlw-scan idlwave-help idlw-help idlwave-complete idlw-complete idlwave-variables idlw-variables skeleton cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs elec-pair appt diary-lib diary-loaddefs cal-menu calendar cal-loaddefs pcase dired-x dired-aux dired dired-loaddefs edmacro kmacro use-package-bind-key bind-key easy-mmode use-package-core repeat cus-edit pp cus-start cus-load wid-edit debbugs-autoloads ebdb-autoloads cl-extra help-mode ef-themes-autoloads elpher-autoloads exwm-autoloads gnuplot-autoloads hyperbole-autoloads kotl-autoloads hact set hhist idlwave-autoloads notmuch-autoloads osm-autoloads pdf-tools-autoloads reddigg-autoloads ht-autoloads dash-autoloads promise-autoloads rust-mode-autoloads info slime-autoloads warnings macrostep-autoloads speed-type-autoloads sudo-edit-autoloads svg-clock-autoloads tablist-autoloads transmission-autoloads xelb-autoloads ytdious-autoloads package browse-url xdg url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs icons password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen 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 kqueue lcms2 dynamic-setting font-render-setting xinput2 x multi-tty move-toolbar make-network-process tty-child-frames emacs) Memory information: ((conses 16 825915 601162) (symbols 48 50206 2) (strings 32 241027 35648) (string-bytes 1 5956291) (vectors 16 147594) (vector-slots 8 2090329 43874) (floats 8 650 1102) (intervals 56 17196 162) (buffers 1064 122)) -- Manuel Giraud
bug-gnu-emacs <at> gnu.org
:bug#79067
; Package emacs
.
(Mon, 21 Jul 2025 09:52:01 GMT) Full text and rfc822 format available.Message #8 received at 79067 <at> debbugs.gnu.org (full text, mbox):
From: Manuel Giraud <manuel <at> ledu-giraud.fr> To: 79067 <at> debbugs.gnu.org Subject: Re: bug#79067: 31.0.50; Cannot async-shell-command anymore Date: Mon, 21 Jul 2025 11:51:38 +0200
Manuel Giraud <manuel <at> ledu-giraud.fr> writes: > Hi, > >From a current build, I can't call `async-shell-command' anymore. Here > is my recipe: > > - emacs -Q > - M-& ls <RET> > > I get the following error: > > shell-command: Asynchronous shell commands cannot output to current > buffer I'm not quite sure about the logic at play here but the following patch fixes my issue: diff --git a/lisp/simple.el b/lisp/simple.el index 88886de05c4..f7f059793ca 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4715,7 +4715,8 @@ shell-command ;; Output goes in a separate buffer. (if (string-match "[ \t]*&[ \t]*\\'" command) ;; Command ending with ampersand means asynchronous. - (let* ((_ (or (bufferp output-buffer) + (let* ((_ (or (null output-buffer) + (bufferp output-buffer) (stringp output-buffer) (error "Asynchronous shell commands cannot output to current buffer"))) (buffer (get-buffer-create -- Manuel Giraud
bug-gnu-emacs <at> gnu.org
:bug#79067
; Package emacs
.
(Mon, 21 Jul 2025 10:28:01 GMT) Full text and rfc822 format available.Message #11 received at 79067 <at> debbugs.gnu.org (full text, mbox):
From: Stephen Berman <stephen.berman <at> gmx.net> To: Manuel Giraud <manuel <at> ledu-giraud.fr> Cc: 79067 <at> debbugs.gnu.org Subject: Re: bug#79067: 31.0.50; Cannot async-shell-command anymore Date: Mon, 21 Jul 2025 12:27:38 +0200
[Message part 1 (text/plain, inline)]
On Mon, 21 Jul 2025 11:51:38 +0200 Manuel Giraud <manuel <at> ledu-giraud.fr> wrote: > Manuel Giraud <manuel <at> ledu-giraud.fr> writes: > >> Hi, >> >>From a current build, I can't call `async-shell-command' anymore. Here >> is my recipe: >> >> - emacs -Q >> - M-& ls <RET> >> >> I get the following error: >> >> shell-command: Asynchronous shell commands cannot output to current >> buffer > > I'm not quite sure about the logic at play here but the following patch > fixes my issue: > > diff --git a/lisp/simple.el b/lisp/simple.el > index 88886de05c4..f7f059793ca 100644 > --- a/lisp/simple.el > +++ b/lisp/simple.el > @@ -4715,7 +4715,8 @@ shell-command > ;; Output goes in a separate buffer. > (if (string-match "[ \t]*&[ \t]*\\'" command) > ;; Command ending with ampersand means asynchronous. > - (let* ((_ (or (bufferp output-buffer) > + (let* ((_ (or (null output-buffer) > + (bufferp output-buffer) > (stringp output-buffer) > (error "Asynchronous shell commands cannot output to current buffer"))) > (buffer (get-buffer-create The commit message of 852009b4f1c9, which added the bufferp and stringp checks and the error message, says 'Improve error message for "C-u M-! something &"'. An alternative is to ignore the prefix argument when the command is asynchronous, just like `async-shell-command' ignores the prefix argument:
[Message part 2 (text/x-patch, inline)]
diff --git a/lisp/simple.el b/lisp/simple.el index 88886de05c4..c64d3e5285b 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -4715,9 +4715,12 @@ shell-command ;; Output goes in a separate buffer. (if (string-match "[ \t]*&[ \t]*\\'" command) ;; Command ending with ampersand means asynchronous. - (let* ((_ (or (bufferp output-buffer) - (stringp output-buffer) - (error "Asynchronous shell commands cannot output to current buffer"))) + (let* ((output-buffer (unless (consp output-buffer) + ;; Output of asynchronous commands + ;; cannot be inserted into current + ;; buffer, so if OUTPUT-BUFFER is a + ;; prefix argument, ignore it. + output-buffer)) (buffer (get-buffer-create (or output-buffer shell-command-buffer-name-async))) (bname (buffer-name buffer))
[Message part 3 (text/plain, inline)]
Steve Berman
bug-gnu-emacs <at> gnu.org
:bug#79067
; Package emacs
.
(Mon, 21 Jul 2025 10:43:02 GMT) Full text and rfc822 format available.Message #14 received at 79067 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Manuel Giraud <manuel <at> ledu-giraud.fr> Cc: 79067 <at> debbugs.gnu.org Subject: Re: bug#79067: 31.0.50; Cannot async-shell-command anymore Date: Mon, 21 Jul 2025 13:42:16 +0300
> From: Manuel Giraud <manuel <at> ledu-giraud.fr> > Date: Mon, 21 Jul 2025 10:30:32 +0200 > > >From a current build, I can't call `async-shell-command' anymore. Here > is my recipe: > > - emacs -Q > - M-& ls <RET> > > I get the following error: > > shell-command: Asynchronous shell commands cannot output to current buffer Sorry about that, should be fixed now.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.