Subject: bug#23006: 25.0.92; Loading Tramp breaks pcomplete in eshell-mode

From: Dmitry Gutov <[email-masked]>
Date: Mon, 21 Mar 2016 23:26:30 +0200

On 03/21/2016 08:36 PM, Michael Albinus wrote:

> Yes, that would be a legitimate scenario to ask Tramp not to open a new
> connection. It's the first time somebody explained this, as far as I'm
> aware of, thanks!

My pleasure.

> So maybe we need two different flags for Tramp: One to suppress opening a
> new connection under any circumstances, and one flag to tell Tramp that
> we are in the file name completion business, and it shall open a new
> connection only it is safe (like seeing a slash in the local file name
> part). Remember my scenario about ediff'ing remote files; I *want* file
> name completion for the second file, even if there's no established
> connection yet.

Do you have any reason to expect that `non-essential' would be set to 
non-nil in that context?

 From your description, I see the reason for the connection to be 
established. It does not describe the slash-related caveats, and what 
would make you avoid establishing a connection, e.g. in the case of ediff.

>> Sure. I'm the author of this report. Still, it would be nice to have
>> `non-essential' have the intended effect.
>
> Still, it would be nice to have let-bound non-essential in order to get
> an effect.

It's not that simple. First of all, I came to this bug from a report by 
a company-mode user. And apparently we're getting the same error, 
through pcomplete-completion-at-point, from two different user 
interactions: one that should set `non-essential' (like Stefan 
suggested), that would be the "idle completion", and one that shouldn't 
set `non-essential', that would be manually initiated completion.

So setting `non-essential' in pcomplete-completion-at-point, or one of 
its callees, looks like a wrong solution to me.

But getting back to this bug report:

I've just typed `M-x pcomplete', which should be a good indicator that I 
probably want to be prompted for credentials, if required. 
`non-essential' should be nil in this scenario. And yet, I shouldn't see 
that error.