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: [PATCH] `completing-read`: Add `group-function` support to completion metadata Date: Sun, 25 Apr 2021 21:47:10 +0200 Message-ID: References: <39c93100-a352-538d-717a-663bcc5de296@yandex.ru> 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="35344"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Gregory Heytings , Stefan Monnier To: Dmitry Gutov , "emacs-devel@gnu.org" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Apr 25 21:48:46 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 1lakkH-00095b-QU for ged-emacs-devel@m.gmane-mx.org; Sun, 25 Apr 2021 21:48:45 +0200 Original-Received: from localhost ([::1]:41348 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lakkG-0004UC-Ur for ged-emacs-devel@m.gmane-mx.org; Sun, 25 Apr 2021 15:48:44 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:38236) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lakir-00041g-2O for emacs-devel@gnu.org; Sun, 25 Apr 2021 15:47:17 -0400 Original-Received: from server.qxqx.de ([2a01:4f8:121:346::180]:34607 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 1lakip-0001Az-J6 for emacs-devel@gnu.org; Sun, 25 Apr 2021 15:47:16 -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:Cc:To:Subject:Sender:Reply-To: 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=VSN4RBFytW4rK/gYwc9BM40fKp8wI53SKCB9A5ywbFo=; b=ldDSRlMcVq2rKrIhyIBmUmbwJp I6q+5rf2Cn0yqfwB/AGWMlRrsfNZRn1XhO3/27AdBn9OYP4PENV8nlYsh39Ahm+6/69htGbBhdkAg gjPwD/cwBPqcGd0uXZ6dxZgpy68EtiywxMAxZm5Rh5WmGd3rwD1xhFrUTjFNh7/8/fmE=; In-Reply-To: <39c93100-a352-538d-717a-663bcc5de296@yandex.ru> 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:268417 Archived-At: On 4/25/21 9:35 PM, Dmitry Gutov wrote: > The result looks nice (when enabled), though this function still doesn't > work very well with the default completing read. So whether this feature > works okay will depend on the alternative UI used. Dmitry, thank you for looking at the patch! What do you mean exactly by "it does not work well"? There was an issue with `choose-completion` which I just fixed in the revised version of the patch, where the command `choose-completion` returned the transformed candidate. > I wonder if there can be other examples of group-function usage added > which work okay with the default completion UI. I am sure we can find more uses. But this functionality is also targeted at package authors who want to write commands with an UI enhanced by grouping. > Speaking of group-function's implementation there, the text-properties > approach seems like an overkill since we can reliably string-match > anyway. But it's a minor thing. I've chosen the text property approach such that the group title retrieval does not lead to allocations (transform=nil). The transform=nil call is performance critical for continuously updating UIs like Icomplete, Vertico etc., since the candidates are grouped after sorting. When displaying the set of candidates in the *Completions* buffer or a subset of the candidates in the minibuffer, the allocations do not hurt as much. > Another minor issue is that the docstring still says "Return title of > candidate" rather than "group title" or "group name". Okay, I will change this. Daniel