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

From: Julien Roy <[email-masked]>
Date: Thu, 05 Jan 2023 15:58:10 -0500

Hi Gregory,

Gregory Heytings <[email-masked]> writes:

>
> There are two problems here:
>
> 1. fido-mode sets completion-styles to 'flex', and as indicated in the
> docstring of completion-styles "Tramp host name completion (e.g.,
> "/ssh:ho<TAB>") currently doesn't work if this list doesn't contain at
> least one of `basic', `emacs22' or `emacs21'."  The workaround is to
> add this to your init file:
>
> (advice-add #'icomplete--fido-mode-setup
> 	    :after (lambda () (setq completion-styles '(flex basic))))
>
> You could also ask for that change to be made in core.
>
> 2. Doing that is not enough, because of an incompatibility between
> Tramp and the 'flex' and 'substring' mechanisms.  The Tramp manual has
> a footnote which mentions that incompatibility: "Some completion
> styles, like `substring' or `flex', require to type at least one
> character after the trailing `:'."  A one-line patch to fix it was
> proposed, but rejected, a year and a half ago.  It is attached to this
> email, and you can use it locally.  As I said in the bug thread in
> which that patch was proposed: "I expect other bug reports from
> confused users".
>
>
<#secure method=pgpmime mode=sign>

I did that, added the snipped to my init file, and patched my
tramp.el. Now, Tramp completion works as expected in fido-mode:
C-x C-f /ssh <tab> : auto-completes tramp methods (/ssh: /sshx: /sshfs:)
C-x C-f /ssh: <tab> : auto-completes with known hosts

Thank you very much!

-- 
Julien