Subject: bug#50209: 27.2; eshell-command not working async

From: Thierry Volpiatto <[email-masked]>
Date: Fri, 27 Aug 2021 05:46:41 +0000

Lars Ingebrigtsen <[email-masked]> writes:

> Thierry Volpiatto <[email-masked]> writes:
>
>> When running a command in eshell ending with "&" the command should not
>> block emacs, it should run asynchronously.
>
> Do you have a recipe to reproduce?  I tried
>
> emacs -Q
> M-x eshell RET
> sleep 10 &
>
> and it ran that asynchronously.  

Yes, that's work, now do:

M-x eshell-command
sleep 10 &

Debugger entered--Lisp error: (error "Format specifier doesn’t match argument type")
  format-message("Unmatched delimiter: %c" #<process sleep>)
  apply(format-message ("Unmatched delimiter: %c" #<process sleep>))
  error("Unmatched delimiter: %c" #<process sleep>)
  eshell-eval-command((let ((eshell-current-handles '[nil (t . 1) (t . 1)]) eshell-current-subjob-p) (let ((eshell-this-command-hook '(ignore))) (condition-case err (eshell-do-eval '(prog1 '... '...) nil) ((debug error) (mapc #'funcall eshell-this-command-hook) (eshell-errorn (error-message-string err)) (eshell-close-handles 1))))))
  eshell-command()
  funcall-interactively(eshell-command)
  call-interactively(eshell-command record nil)
  command-execute(eshell-command record)
  execute-extended-command(nil "eshell-command" "eshell-comm")
  funcall-interactively(execute-extended-command nil "eshell-command" "eshell-comm")
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)

Sleep is later executed, if you wait 10s you have the result, but the
error prevent running properly the command programatically.

-- 
Thierry