GNU bug report logs -
#63432
30.0.50; Handle current-prefix-arg in async-shell-command
Previous Next
Reported by: Gabriel <gabriel376 <at> hotmail.com>
Date: Wed, 10 May 2023 23:10:02 UTC
Severity: normal
Found in version 30.0.50
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #8 received at 63432 <at> debbugs.gnu.org (full text, mbox):
> From: Gabriel <gabriel376 <at> hotmail.com>
> Date: Wed, 10 May 2023 20:04:24 -0300
>
> Steps:
> 1) emacs -Q from master branch (3adc1e7f379)
> 2) C-u M-& "ls"
> Error: shell-command: Wrong type argument: stringp, (4)
>
> Cause:
> When called interactively, `async-shell-command' pass argument
> OUTPUT-BUFFER as `current-prefix-arg' to `shell-command'. As per
> docstring of `shell-command':
>
> "If OUTPUT-BUFFER is not a buffer and not nil (which happens
> interactively when the prefix argument is given), insert the output in
> current buffer after point leaving mark after it. This cannot be done
> asynchronously."
Yes, this bug was there since the day async-shell-command was added to
Emacs.
> diff --git a/lisp/simple.el b/lisp/simple.el
> index 58517dd81f9..ba832581955 100644
> --- a/lisp/simple.el
> +++ b/lisp/simple.el
> @@ -4499,10 +4499,12 @@ async-shell-command
> ((eq major-mode 'dired-mode)
> (dired-get-filename nil t)))))
> (and filename (file-relative-name filename))))
> - current-prefix-arg
> + nil
> shell-command-default-error-buffer))
> (unless (string-match "&[ \t]*\\'" command)
> (setq command (concat command " &")))
> + (when (and output-buffer (numberp output-buffer))
> + (error "Invalid output buffer"))
> (shell-command command output-buffer error-buffer))
Thanks, but I don't understand why we need the error message. Isn't
it enough to pass nil as 2nd argument to shell-command?
This bug report was last modified 2 years and 11 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.