From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Daniel Mendler Newsgroups: gmane.emacs.devel Subject: Re: Stepping Back: A Wealth Of Completion systems Re: [ELPA] New package: vertico Date: Fri, 9 Apr 2021 10:53:09 +0200 Message-ID: <311f38fe-c622-4d77-7422-787fd369e79b@daniel-mendler.de> References: <9c9af088-580f-9fb1-4d79-237a74ce605c@inventati.org> <874kgkxxs0.fsf@posteo.net> <3ec7e2e58a100426a22e@heytings.org> <877dleb2px.fsf@posteo.net> <87blaq5amw.fsf@posteo.net> <87o8eplxgt.fsf@posteo.net> <1a701fa9-52e9-df8c-562a-6e793e2347a1@daniel-mendler.de> <87k0pcufsl.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="7362"; mail-complaints-to="usenet@ciao.gmane.io" To: Tassilo Horn , emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Apr 09 10:54:16 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lUmu7-0001oA-OJ for ged-emacs-devel@m.gmane-mx.org; Fri, 09 Apr 2021 10:54:15 +0200 Original-Received: from localhost ([::1]:36920 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lUmu6-0007MG-Oq for ged-emacs-devel@m.gmane-mx.org; Fri, 09 Apr 2021 04:54:14 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:53074) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUmtE-0006tX-R0 for emacs-devel@gnu.org; Fri, 09 Apr 2021 04:53:21 -0400 Original-Received: from server.qxqx.de ([2a01:4f8:121:346::180]:36513 helo=mail.qxqx.de) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lUmt9-0000iN-Kg; Fri, 09 Apr 2021 04:53:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=qxqx.de; s=mail1392553390; h=Content-Transfer-Encoding:Content-Type:In-Reply-To: MIME-Version:Date:Message-ID:From:References:To:Subject:Sender:Reply-To:Cc: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=7jDROumuUJD5sbNxb4LZIxYeB9lz0WtAhJAdtqjWCxs=; b=eTpvubh27q6DcSr+0kYxAPcamI cWKxvf1pHMEG37603jrpG40cq6IwZ5D4OHdTIh3Ab3CfMyTAjNsOkZTZ4dkd6ICzGt+fSk1uS/fNf KIC+NfLC3CRudLlgyJhom7k3zy45jvqYtt8G6xDICEZ9AbsEZBX4JIG4XjsrA4w5NuAA=; In-Reply-To: <87k0pcufsl.fsf@gnu.org> Content-Language: en-US Received-SPF: pass client-ip=2a01:4f8:121:346::180; envelope-from=mail@daniel-mendler.de; helo=mail.qxqx.de X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:267696 Archived-At: On 4/9/21 8:21 AM, Tassilo Horn wrote: > Daniel Mendler writes: > >>> I use the default completion system, so for me it is not about >>> filtering a data set but expanding a string. Just to reiterate, this >>> is exactly the point I am bringing this up. >> >> Well, but what does this mean in the context of opening a file? I >> guess, you are not interested in the string (the file name) alone but >> in the end you want to select a file? > > I'm not sure that's what your are asking but one thing that comes to > mind is that when I want to find the file > > ~/Repos/el/emacs/lisp/doc-view.el > > I can just do > > C-x C-f reeld > > and that will already expand to ~/Repos/el/emacs/l/d if > `completion-styles' contains `initials' (and > `read-file-name-completion-ignore-case' set to t). Now depending on > what I type further, it'll also switch between lisp/ or lib/ directory. > > AFAIK, that's not really supported with (most) alternative completion > UIs where the possible completions are always the files of the currently > selected directory. The completion you describe works with Vertico. The candidate set is updated accordingly in the UI. (setq completion-category-overrides nil) (setq completion-category-defaults nil) (setq completion-styles '(initials)) (vertico-mode) However what does not work is the further narrowing in an Orderless fashion (your lisp/lib selection). This is what I assume you want to do? One could use both initials+orderless completion styles, but then one would also need a feature in the completion system which locks the current candidate set. There is the Restricto package by Omar, who is also the author of Orderless. Restricto essentially replaces the minibuffer-completion table with the current candidate subset - a bit of a hack if you ask me. And probably Icicles supports something like this out of the box? The idea is basically to lock the candidate set and switch between completion styles. This feature does not seem to be available in the Emacs completion mechanism directly. Daniel Mendler