Subject: bug#60505: 29.0.60; Fido Mode and Tramp Completion

From: Michael Albinus <[email-masked]>
Date: Sun, 15 Jan 2023 20:23:57 +0100

Gregory Heytings <[email-masked]> writes:

> Michael,

Hi Gregory,

> what do you think of that patch?  It would be regrettable to
> leave that bug unfixed in Emacs 29.

Yes, it would be desirable to fix this. But it isn't the end of the
world if this doesn't happen, the problem is already evident in Emacs
28, so we don't have a regression.

>> By the way, to limit the scope of the potential collateral damages,
>> it is also possible to use that condition only when
>> completion-styles contain 'substring' or 'flex'.
>>
>> What do you think of the attached patch?

And what do we want to do if there are more completion-styles like this?
Extend Tramp then?

And there are more use cases like this, which are not working
properly. Think about changing the Tramp syntax to `separate', which
means a remote file name like "[method/user@host]/path/to/file". If you
use default completion, it works like this:

- emacs -Q -l tramp --eval '(tramp-change-syntax (quote separate))'
- Type "/ [ s TAB" and you see all methods
- Continue with "s h / TAB" and you see nonsense :-(
- Continue with "d TAB" and you see all possible host names starting
  with "d"
- Select a host name and type "] TAB TAB" and you see the remote file names

And now with fido:

- emacs -Q -l tramp --eval '(tramp-change-syntax (quote separate))' -f fido-mode
- Type "/ [ s TAB" and you see no completion at all
- Continue with "s h / TAB" and you see the same nonsense :-(
- Continue with "d TAB" and you see no completion at all
- Type host name and type "] TAB TAB" and you see the remote file names

Although the default completion isn't perfect (likely a Tramp bug),
there is much more wrong with fido.

The last days, since you have shown your patch here, I've spent several
hours debugging Emacs completion in order to understand what's
up. Horrible, because Emacs completion machinery is pretty complex and
under-documented (I believe). And honestly, I'm not interested too much
in this machinery.

It is a pity, that *nobody* who knows this in detail tries to
investigate the problem here, although we have already five reports
about.

Instead, Tramp shall apply a patch which is not related there, which
adds further dependencies, which is not working for all use cases, and
which is good for making more trouble in the future. My opinion.

Anyway, I will try to investigate the completion machinery. No promise
that I will succeed.

Best regards, Michael.