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

From: Michael Albinus <[email-masked]>
Date: Wed, 01 Feb 2023 21:15:41 +0100

Gregory Heytings <[email-masked]> writes:

Hi,

>>> It's correct that the same problem is present in Emacs 28, but it
>>> is not in Emacs 27, so it's a regression.  As I tried to explain in
>>> bug#50387, the problem is that once Tramp is loaded, Tramp methods
>>> are returned when completions are requested for a root directory
>>> ("/"). This problem is even worse since commit d5c6bf9625: prior to
>>> that commit only the 'scp' and 'scpx' methods were returned (in
>>> emacs -Q), now all methods are returned.  And this confuses the
>>> flex and substring completion mechanisms.
>>
>> Yes. But this is not a Tramp fault.
>
> It definitely is Tramp's "fault".

Have you even tried to check the PoC patch I've sent?

>> Completion styles like flex (and substring, didn't test) do ignore
>> Tramp file name syntax. They simply think in terms of file name
>> parts, separated by "/". This is not appropriate for remote file
>> names.
>
> What filenames are is defined for example by POSIX in its Definitions
> chapter ("Filename", "Pathname", "Pathname Resolution").  It is quite
> clear in those definitions that there is no place for a _method_ or a
> _host name_ in file names.  Something with a method, a host name and a
> path is a different beast: it's an URI.  And it's not a coincidence if
> (absolute) file names start with a slash, and URI do _not_ start with
> a slash.
>
> Tramp decided, for a reason I do not clearly understand, to invent
> URIs starting with a slash.  File name completion mechanisms rightly
> assume that file names correspond to the standard syntax of file
> names, and there is no reason (and, for that matter, no reliable way)
> to fix the current problem at the level of completion styles.

In that case I recommend you to abstain from using Tramp.

I'm so fed up.

EOT