From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Stepping Back: A Wealth Of Completion systems Re: [ELPA] New package: vertico Date: Wed, 07 Apr 2021 10:44:11 -0400 Message-ID: References: <9c9af088-580f-9fb1-4d79-237a74ce605c@inventati.org> <874kgkxxs0.fsf@posteo.net> <78741fe6-2612-d7c9-2bc4-0b68ea7fa51a@yandex.ru> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35140"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Philip Kaludercic , emacs-devel@gnu.org, Manuel Uberti , "T.V Raman" To: Dmitry Gutov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Apr 07 16:45:32 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 1lU9Qy-00091N-Q9 for ged-emacs-devel@m.gmane-mx.org; Wed, 07 Apr 2021 16:45:32 +0200 Original-Received: from localhost ([::1]:55120 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lU9Qx-0003I7-Qc for ged-emacs-devel@m.gmane-mx.org; Wed, 07 Apr 2021 10:45:31 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45968) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lU9Pl-0002If-VE for emacs-devel@gnu.org; Wed, 07 Apr 2021 10:44:17 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:9387) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lU9Pj-0003mz-Kb for emacs-devel@gnu.org; Wed, 07 Apr 2021 10:44:17 -0400 Original-Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 2EE3F100201; Wed, 7 Apr 2021 10:44:14 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 580EE1000F4; Wed, 7 Apr 2021 10:44:12 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1617806652; bh=60H1cVyawONZpKvS5iTLwZhhadPVuTQpCFnxckPz4jI=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=FgDn8B9270/klJIB3DQ5Om1PqBagilAsHnetbgDIfp9wU2Ww7/ZhYrd7EQGW9Ias4 GY4m4BEExLBulXqdIy+jXSInNrOA6O90GZQA61HLGvnANexW5b83Inlki1HZpthzWJ QrK/fLKVc3OmCv5Po8eNl0OxX8BNPixNJackVMoohTMcSxoFZ3zyqQp/yM9b+C0N0/ 9dZZqYtgZg86gVfkvre382wuogTJl0uAkc3Ee/uZAa/I07LoJmd8o5/8STAq0CzCZl re9TI3xd/QCR82twr3ppe484NXtZqJXhGbyUAUOTKqGBB4sNwBbBeRGzR+zx6QpAhf r+dIysKN5zsfA== Original-Received: from alfajor (104-222-126-84.cpe.teksavvy.com [104.222.126.84]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 12FAA12034C; Wed, 7 Apr 2021 10:44:12 -0400 (EDT) In-Reply-To: <78741fe6-2612-d7c9-2bc4-0b68ea7fa51a@yandex.ru> (Dmitry Gutov's message of "Wed, 7 Apr 2021 16:01:01 +0300") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=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:267523 Archived-At: >> Most completion frameworks I have looked at seem to limit themselves to >> the latter. To simplify, they collect all the options of a collection >> using all-completions and then narrow it depending on user input. Ido >> and all it's descendents (Ivy, Helm, Selectrum and now vertico) seem to >> be based on that approach. > I don't think that's true. I don't think the frequency of refreshing the list of candidates is what he was referring to, but rather the support for "TAB completion" which corresponds to the `(completion-)try-completion` operation which is expected to extract the commonality between the various candidates. Most completion frameworks minimize the importance of this operation (or don't support it at all) and instead focus on displaying the set of candidates, filtering them, and finally picking one of them. Seen from the point of view of the implementation, I can understand why it's done this way: the more sophisticated your completion style is, the harder it gets to implement `try-completion` (and often the less useful it gets as well. E.g. for things like `flex` it's very common for there to be no commonality at all to extract). So removing the `try-completion` operation makes for a simpler API and a simpler implementation (it also simplifies significantly the quote/unquote handling) and users who like things like `flex` won't even notice the difference. Stefan