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

From: Drew Adams <[email-masked]>
Date: Sun, 20 Mar 2016 09:38:51 -0700 (PDT)

> > Of course, it's possible I'm missing something big here, in
> > which case I apologize.  But my impression from what I've seen
> > so far is that you are now digging into the weeds in territory
> > where Tramp does not really belong.
> 
> Maybe you are right, and I'll happily discuss this. But think about the
> difference of "a connection has already been established to a host", and
> "no connection has been established to a host". Tramp shall support file
> name completion at least in the first case.

Yes, but I don't see how that contradicts what I said.  Tramp should
(I think) always interpret non-nil `non-essential' as an inhibition
to prompt.  If there is already a connection then presumably
(hopefully) Tramp would not prompt anyway, regardless of the value
of `non-essential'.

> I don't know whether completion packages want to go into the business
> of deciding this question.

They are not _required_ to decide it.  But if they set/bind
`non-essential' to non-nil then I think Tramp should consider
that they _have_ decided it - they've decided that Tramp should
not prompt.

> Therefore, there must be a trade-off between completion
> packages and Tramp in order to decide whether to complete.

I think the trade-off is here: When `non-essential' is nil
then Tramp gets to decide (e.g., depending on whether there
is already a connection - or the phase of the moon, for that
matter).  When `non-essential' is non-nil, Tramp does not
get to decide - the decision has been made that Tramp must
not prompt.

Again, though, I'm no expert on any of this.  Maybe there
are legitimate reasons why Tramp should sometimes prompt
even when `non-essential' is non-nil.  But if there are
then they are beyond my (current) understanding.

> Anyway, the purpose of *this* bug report is that non-essential hasn't
> been bound, and nobody could explain to me why it is wrong to bind it in
> pcomplete. 

I see.  Sorry for intruding here then.  I have nothing to
say about whether pcomplete should bind `non-essential'
to non-nil.  That's apparently a question about pcomplete
behavior and not about Tramp behavior in the face of non-nil
`non-essential'.

> I would like to fix *this* problem in the bug report, and
> discuss proper usage of non-essential somewhere else,
> in emacs-devel or another bug report. Otherwise, we loose focus.

Agreed.  Sorry if my messages here were not helpful.

I would like to know, though, whether you agree generally
that non-nil `non-essential' should inhibit prompting by
Tramp.

If you don't then maybe we can discuss it off line or in
emacs-devel.  I'd like to understand that better, as (I
think) I need to know how to control such prompting in
my code.  I thought that it was sufficient to bind
`non-essential' to non-nil to prevent prompting.