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 (REVISED PATCH VERSION 2) Date: Fri, 7 May 2021 19:55:19 +0200 Message-ID: <78bb0663-80ef-a68f-c582-cd7cc0436c29@daniel-mendler.de> References: <0bbdeece-90d5-160c-07ec-2ad8edbf9872@daniel-mendler.de> <87czudm7bv.fsf@mail.linkov.net> <976056e8-3d46-db27-32c2-ddf3ca32d5a7@daniel-mendler.de> <878s5090e9.fsf@mail.linkov.net> <69fd42ed-a1a0-adcb-ac8b-caad80cb0967@daniel-mendler.de> <878s4zzpvc.fsf@mail.linkov.net> <95ac7ef3-5e8c-fc58-b316-544096c82aa0@daniel-mendler.de> <87o8dus00b.fsf@mail.linkov.net> <6718c89f-88a0-b529-1676-7e89fc152f00@daniel-mendler.de> <878s4w3law.fsf@mail.linkov.net> <87sg2ymq6j.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="40245"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Gregory Heytings , "emacs-devel@gnu.org" , Stefan Monnier , Dmitry Gutov To: Juri Linkov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri May 07 19:56:24 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 1lf4i8-000AKf-EB for ged-emacs-devel@m.gmane-mx.org; Fri, 07 May 2021 19:56:24 +0200 Original-Received: from localhost ([::1]:47696 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lf4i6-0006zN-JC for ged-emacs-devel@m.gmane-mx.org; Fri, 07 May 2021 13:56:22 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51206) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lf4hE-0006Tz-S5 for emacs-devel@gnu.org; Fri, 07 May 2021 13:55:28 -0400 Original-Received: from server.qxqx.de ([2a01:4f8:121:346::180]:51165 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 1lf4hB-0006RY-30 for emacs-devel@gnu.org; Fri, 07 May 2021 13:55:28 -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=0g8bLhuJU6C+mEDGDVIk3CUSDtw5aiJDcZYt89c+tiE=; b=nbPgm8Kw+58jyI4xRJJEfobWwK lKGhqsU7xFh++FyPKHqgeZv70g3aYZ+Fwxrp+cJ84lC9mMk8xM9/As2PAgVJcMWJ+XtQPZ3nccwQK XfT3Iv2nuaW0Pf0bV08aBALfyvS5rcVcvuCP1bPoAi/eQwAggi9ww+9oRqm3GVhfJYKk=; In-Reply-To: <87sg2ymq6j.fsf@mail.linkov.net> 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:269013 Archived-At: On 5/7/21 7:03 PM, Juri Linkov wrote: > I tried to remove `read-char-by-name-group`, but it has a feature > currently not supported by `group-function`: > > (defcustom read-char-by-name-group nil > "How to group characters for `read-char-by-name' completion. > When t, split characters to sections of Unicode blocks > sorted alphabetically." > ===================== > > It seems a new function is needed to sort groups, e.g. `group-sort-function`. > > Maybe better to push your current patches, so it would be easier > to base the next patches on master? My original thoughts for a `group-function` proposal were such that the `group-function` had the capability to sort the groups. During the previous discussion with Stefan and Dmitry we somehow agreed that it is better to keep things simple and to not allow the `group-function` to sort the groups. Instead, sorting should only be provided by the `cycle/display-sort-functions`. For context, you can find the previous discussion at https://github.com/minad/consult/issues/283. See in particular comment https://github.com/minad/consult/issues/283#issuecomment-825749551. (I would have pinged you there if I would have known that you are interested in that functionality. I was not aware that `read-char-by-name-group` had recently been added to Emacs master.) I suggest to add a special `cycle/display-sort-function` to the completion table if `read-char-by-name-group` is non-nil, which sorts the candidates such that you achieve the desired group order. I would avoid adding a separate `group-sort-function`. Alternatively one may consider to give up the sorting as is present in the current `read-char-by-name-group` functionality. From my perspective that would be okay. The behavior is more predictable if sorting is only performed by the `cycle/display-sort-function` and not by some additional sorting function. I believe I've also read some critical comments on the mailing list before regarding the existence of `cycle/display-sort-functions` in completion tables. The argument was that sorting should be provided mostly by the completion UI and the completion style as configured by the user externally from the completion table. This reflects my experience - I am often happy with the default sorting as provided by the completion UI (for example by history position, length and alphabetically) or by the sorting as provided by the flex completion style. Daniel