GNU bug report logs - #50387
Possible bug in Tramp or in completions

Previous Next

Package: emacs;

Reported by: Gregory Heytings <gregory <at> heytings.org>

Date: Sun, 5 Sep 2021 00:45:01 UTC

Severity: normal

Done: Gregory Heytings <gregory <at> heytings.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Gregory Heytings <gregory <at> heytings.org>
Subject: bug#50387: closed (Re: bug#50387: Possible bug in Tramp or in
 completions)
Date: Tue, 07 Sep 2021 17:52:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#50387: Possible bug in Tramp or in completions

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 50387 <at> debbugs.gnu.org.

-- 
50387: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=50387
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Gregory Heytings <gregory <at> heytings.org>
To: Michael Albinus <michael.albinus <at> gmx.de>
Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, 50387-done <at> debbugs.gnu.org
Subject: Re: bug#50387: Possible bug in Tramp or in completions
Date: Tue, 07 Sep 2021 17:51:17 +0000
>>> That means, "scp:" hasn't been passed to 
>>> tramp-completion-handle-file-name-all-completions, and the result of 
>>> that function looks proper to me.
>>
>> Yet it isn't.
>
> Why not? In this example, `completion-styles' contains `substring'. And 
> then you ask for completion of "/scp:". Looking at the candidates 
> returned by `tramp-completion-handle-file-name-all-completions', only 
> "pscp:" and "scp:" have the substring "scp:".
>

Because after typing "/s" or "/sc" or "/scp" it makes sense to see that 
"/scp:" is among the completion candidates, but after typing "/scp:" it 
doesn't make sense anymore, the method has already been entered by the 
user, what they now want to see is a list of hosts, and there is no way to 
see it.

>> - before your attempt to fix the problem, C-x C-f / TAB only displayed 
>> "scp:" and "scpx:" among the completion candidates (or e.g. "ssh:", 
>> "sshfs:" and "sshx:" with tramp-default-method set to "ssh");
>
> Yes, this is changed.
>
>> - now C-x C-f / TAB displays all Tramp methods;
>
> When Tramp is loaded. I regard this to be correct.
>
>> - with my patch, which actually fixes the bug, C-x C-f / TAB does not 
>> display any Tramp method, as it should.
>
> Again, C-x C-f / TAB displays a Tramp method only when Tramp is loaded.
>

I filed a bug report, explained in every detail what the bug is, provided 
a patch, and the end result is a situation that is worse than earlier.  I 
expect other bug reports from confused users, and hope that you'll change 
your mind.

Closing.

[Message part 3 (message/rfc822, inline)]
From: Gregory Heytings <gregory <at> heytings.org>
To: bug-gnu-emacs <at> gnu.org
Subject: Possible bug in Tramp or in completions
Date: Sun, 05 Sep 2021 00:43:59 +0000
With a ~/.ssh/config file containing two entries:

Host foo
  ...
Host bar
  ...

emacs -Q
M-: (setq tramp-default-method "ssh")
M-: (add-to-list 'completion-styles 'substring)
C-x C-x /ssh: TAB

displays "Sole completion".  If, instead of having completion-styles set 
to:

(substring basic partial-completion emacs22)

it is set to:

(basic substring partial-completion emacs22)

then two completion candidates are shown (as expected): "ssh:foo:" and 
"ssh:bar:".

This happens because the "substring" completion mechanism is tried first 
by completion--some in completion--nth-completion, and returns (t . 
substring), because

(completion-substring-try-completion "/ssh:" #'completion-file-name-table 
#'file-exists-p 5)

returns t, because

(completion-substring--all-completions "/ssh:" 
#'completion-file-name-table #'file-exists-p 5) returns (("ssh:")

returns (prefix "ssh:") "/" "" 1), because

(completion-boundaries "/ssh:" #'completion-file-name-table 
#'file-exists-p "")

returns (1 . 0).

When the "basic" completion mechanism is tried first,

(completion-basic-try-completion "/ssh:" #'completion-file-name-table 
#'file-exists-p 5)

returns ("/ssh:" . 5).

It is not clear to me whether this is a bug (I always thought that the 
order of completion mechanisms in completion-styles did not matter, and in 
this case it does indeed make no difference with (setq 
tramp-default-method "scp")), and if so if it is a bug in Tramp, or in the 
completion functions.



This bug report was last modified 3 years and 258 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.