From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.help Subject: Re: Tramp shows no user/host completions (solved while writing) Date: Sun, 27 Oct 2019 17:30:19 -0400 Message-ID: References: <87v9seb0af.fsf@gnu.org> <874kzyylzw.fsf@gmx.de> <16dff4d0648.27dc.69bc538c4644581689883e654f15bce0@gnu.org> <87a79po1vj.fsf@gnu.org> <87lft8yjnj.fsf@gmx.de> <87zhhn9nw5.fsf@gnu.org> <874kzuy5v3.fsf@gmx.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="61457"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sun Oct 27 22:30:46 2019 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iOq7a-000Fqx-8K for geh-help-gnu-emacs@m.gmane.org; Sun, 27 Oct 2019 22:30:46 +0100 Original-Received: from localhost ([::1]:49590 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iOq7Y-00037K-OC for geh-help-gnu-emacs@m.gmane.org; Sun, 27 Oct 2019 17:30:44 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57686) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iOq7M-00036U-UO for help-gnu-emacs@gnu.org; Sun, 27 Oct 2019 17:30:33 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iOq7L-0005do-Qi for help-gnu-emacs@gnu.org; Sun, 27 Oct 2019 17:30:32 -0400 Original-Received: from 195-159-176-226.customer.powertech.no ([195.159.176.226]:43662 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iOq7L-0005aJ-Iw for help-gnu-emacs@gnu.org; Sun, 27 Oct 2019 17:30:31 -0400 Original-Received: from list by blaine.gmane.org with local (Exim 4.89) (envelope-from ) id 1iOq7I-000FVS-JU for help-gnu-emacs@gnu.org; Sun, 27 Oct 2019 22:30:28 +0100 X-Injected-Via-Gmane: http://gmane.org/ Cancel-Lock: sha1:ufWegwiqjpeb4mc7p1qRBr9Pt0k= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.org gmane.emacs.help:121735 Archived-At: >>> (file-name-all-completions "ssh" "/") ;; for `partial-completion' >>> >>> or >>> >>> (file-name-all-completions "" "/") ;; for `substring' and `flex' >>> >>> or even no call for `initials'. >> >> Would you consider that a bug? It's clearly not the desired outcome. Here's why this happens for example in the case of partial-completion: when partially-completing "/ssh:f" the style would like to accept anything of the form "/ssh:f" (or in glob-style: "/ssh*:f*", which incidentally partial-complete also accepts as input). Since the underlying completion functions only work for prefix completion, the way this is implemented is to get all the prefix completions of "/ssh" and then filter those that match "/ssh*:f*". Now for Tramp, it's virtually impossible to really list all the possible completions of "/ssh" such that the subsequent filtering works as intended. We could try and handle a few "typical" cases, but for example "/ssh:otheruser@otherhos" will be difficult because we'd have to make the prefix completion of "/ssh" return all the possible "/ssh:@" for that (remember: Tramp's completion code isn't told that "otheruser@otherhos" has already been typed in). Another approach would be to try and handle "/ssh:f" more like "/ssh/f": i.e. first ask the backend to find the completions for "/ssh*:" and then with each of the results ask the backend again to find the subsequent completions (i.e. prefix completions for "/ssh:f", "/sshx:f", ...). This is definitely possible by modifying completion-file-name-table, more specifically the `boundaries` part of it, to make it aware of Tramp's syntax (or ideally, to add hooks that let Tramp explain it to the generic code). Stefan