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

From: Stefan Monnier <[email-masked]>
Date: Fri, 18 Mar 2016 13:53:48 -0400

> However, before we start with such radical changes, why do you oppose
> to use non-essential in pcomplete? According to my tests, this solves
> the problem.

non-essential means that what we're doing is a skippable/secondary (aka
non-essential) side-effect of the main operation.  When the user hits
TAB, performing completion is not a skippable side-effect of some other
main operation.  It *is* the main operation.

When the user types "cd /ssh:myhost:src/ema TAB" she *wants* Tramp to
prompt her for a password to then give her the valid completions.

It'd be correct for company-mode to bind non-essential around the code
which computes the completion data in response to the user's normal
editing of the buffer (in order to decide whether the
auto-popup a completion menu), because the completion is not the main
operation.

Similarly it's correct for icomplete to bind non-essential while
computing the completion list, since it's done "in the background" in
response to other editing commands and shouldn't get in the way of those
editing commands.

        Stefan