Subject: bug#42922: 27.1; shell-command-dont-erase-buffer not honored when the existing shell buffer is remote

From: Michael Albinus <[email-masked]>
Date: Wed, 19 Aug 2020 10:52:35 +0200

Sean McAfee <[email-masked]> writes:

Hi Sean,

> Starting from emacs -Q:
>
> Set the variable shell-command-dont-erase-buffer to a true value, say
> end-last-out.
>
> Run an asynchronous shell command: M-& echo foo RET
>
> The buffer *Async Shell Command* appears, showing the word "foo".
>
> Run another async command: M-& echo bar RET
>
> The word "bar" is appended on a new line in the existing async shell
> command buffer, as expected.
>
> Change to that buffer, and cd to any remote directory:
> M-x cd RET /ssh:remote: RET
>
> Run another async command, to be executed in the remote directory:
> M-& echo baz RET
>
> Now the word "baz" entirely replaces the contents of the buffer,
> instead
> of being appended on a new line.

This is bug#39067.

> In GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30)
>  of 2020-08-18 built on SeanMc
> Windowing system distributor 'The X.Org Foundation', version
> 11.0.11906000
> System Description: Ubuntu 18.04.5 LTS

The fix didn't find its way into Emacs 27.1, because it happened when
Emacs 27.1 was already in pretest. The fix is contained in Emacs' master
branch (aka Emacs 28.0.50), and in Tramp 2.4.4.1 of GNU ELPA, which you
can install.

It will be merged into the emacs-27 branch, Emacs 27.2 will contain the fix.

Best regards, Michael.