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

From: Dmitry Gutov <[email-masked]>
Date: Thu, 24 Mar 2016 15:54:05 +0200

On 03/24/2016 03:15 PM, Stefan Monnier wrote:

> That's exactly Michael's point: that Tramp can't know that the current
> operation is part of some kind of completion, just by looking at which
> Tramp functions are called.

That seems to be everybody's point.

> The question is: does Tramp need to know whether or not this
> `directory-files', or `file-directory-p' (or
> `file-name-all-completions', which may also be called in non-completion
> contexts) is called as part of a completion operation?

A general purpose function cannot know.

file-name-all-completions cannot know either, because it can be called 
outside of completion context.

A completion UI cannot know, in general, because it can be used to 
complete just about anything, and it doesn't always know what it's 
completing.

Can completion-file-name-table know?

Maybe a niche completion backend like company-files is the only kind of 
code that *can* know because it's not used for anything else, for now. 
But it's third-party code anyway.

Maybe "we're in a completion operation" is not something that's reliably 
knowable, in a loosely coupled system like Emacs.