Subject: bug#24394: 25.1.50; (find-file "/sudo::") ignores async-shell-command-buffer settings

From: Michael Albinus <[email-masked]>
Date: Mon, 12 Sep 2016 12:07:43 +0200

Tino Calancha <[email-masked]> writes:

> Hi Michael,

Hi Tino,

>> However, I'm kind of reluctant to fix this in
>> `tramp-handle-shell-command'. The respective code in `shell-command'
>> spans over ~40 lines, and I don't believe Tramp shall simply copy those
>> lines (and other details not handled in Tramp yet). It's even
>> questionable that Tramp shall offer an own handler for `shell-command'.
> It might has sense to refactor that part into a new function (see
> patch below).
> The tramp could use this new function which just use the variable
> `async-shell-command-buffer'.  Other things like

This could be done, of course. But it would add additional complexity to
simple.el, although a better solution could be implemented.

> `shell-command-dont-erase-buffer'
> can perfectly be ignored by tramp: they are still not well established.

Mid-term somebody else will write another bug report for this. If we're
going to fix this bug, it shall cover this aspect as well.

>> The reason why Tramp does this is the use of `shell-file-name' and
>> `shell-command-switch'. They keep host local values, for remote
>> connections other values are needed. It is a long standing request, that
>> Tramp shall offer connection local variables, which carry different
>> values for different remote hosts. If we would have such a mechanism,
>> `shell-command' could use `process-file' and `start-file-process',
>> and 
> it
>> would not need to call a file name handler anymore.
>>
>> And this error would go away.
> That sounds like the ultimate solution.

Yes, I'd like to go this way.

> A partial solution could be to allow running >1 async commands as root
> in the local machine _only_.  Then, `shell-file-name' and
> `shell-command-switch' are the same.
> Sometimes i need to execute more than 1 process with root priviledges in
> my local machine: i do this using several terminals.
> Running all the processes inside Emacs would be nicer.

It would be impossible to explain why it is restricted to just this
use case. And people would blame us.

No, I would like to take the opportunity to introduce connection-local
variables. First it needs a proper API.

Best regards, Michael.