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] (icomplete-vertical-mode): Add support for affixations and, annotations Date: Tue, 1 Jun 2021 16:40:17 +0200 Message-ID: References: <87pmxhb1rs.fsf@gmail.com> <23510125-37b9-e87e-3590-5322f44772ce@daniel-mendler.de> <87y2c5nhsr.fsf@mail.linkov.net> <87h7irss50.fsf@mail.linkov.net> <43d1599e-2ba9-2efb-45c3-76c67d29a69d@daniel-mendler.de> <87tumrgqrb.fsf@gmail.com> <87tumq92pe.fsf@mail.linkov.net> <87lf82g10g.fsf@gmail.com> <87y2c24lww.fsf@mail.linkov.net> <871r9t2lsy.fsf@mail.linkov.net> <22880197-6d05-c821-2c58-328ed3cfc02e@daniel-mendler.de> <87eedruui3.fsf@gmail.com> <8dd915fe-fe67-2a45-67ff-8aaa3e9b9aca@daniel-mendler.de> <878s3zuq47.fsf@gmail.com> <09f2a253-84ba-5cfd-552e-0b89109864a5@daniel-mendler.de> <875yyxaoxp.fsf@gmail.com> <871r9laj6a.fsf@gmail.com> <1b73a130-204c-76fb-2b60-02b814aee0f0@daniel-mendler.de> <87r1hl8xom.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38601"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Juri Linkov , "emacs-devel@gnu.org" , monnier@iro.umontreal.ca, Dmitry Gutov To: =?UTF-8?B?Sm/Do28gVMOhdm9yYQ==?= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Jun 01 16:41:23 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 1lo5a7-0009q5-I0 for ged-emacs-devel@m.gmane-mx.org; Tue, 01 Jun 2021 16:41:23 +0200 Original-Received: from localhost ([::1]:41668 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lo5a6-0002Gj-2D for ged-emacs-devel@m.gmane-mx.org; Tue, 01 Jun 2021 10:41:22 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:59624) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lo5ZB-0001UG-Uh for emacs-devel@gnu.org; Tue, 01 Jun 2021 10:40:25 -0400 Original-Received: from server.qxqx.de ([2a01:4f8:121:346::180]:42737 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 1lo5Z9-0005aU-B8 for emacs-devel@gnu.org; Tue, 01 Jun 2021 10:40:25 -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=ttVdAi9X3Z2fDAM9uWHHZKF8XsRuaRmZGF4j7JySpfY=; b=dMq904PaAj9K6OoQWkApr5/y55 2JCfxWjRp1SXD7768KscDsxjeJpPSpHJFpuL7KIO/nLeNBgy9ayhh5rAfa48r1xlR6pxOBM0Y5EKQ O/zSqJsp9bGADZkWTUVdtJ2wuGas0mP99j6+GgmviJAwGjIMTPevMmnCb1sZ3ciR5T+Q=; In-Reply-To: <87r1hl8xom.fsf@gmail.com> 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:270197 Archived-At: On 6/1/21 4:30 PM, João Távora wrote: >> The design of the `group-function` has been extensively discussed. The >> flag is used instead of a tuple for performance reasons. The computation >> of the transformed candidate string may require string allocations, >> which are expensive if performed for every candidate. > > That's right, I see your point. > > They could return a lambda, which is cheap to allocate, to defer the > calculation. Or just nil or #'identity if it's supposed to stay > unchanged. > ... > The protocol is slightly simpler since it returns the same type every > time. More importantly, this avoids threading group-fn down a bunch of > functions in minibuffer.el, where it seems to be adding an awful lot of > complexity. No, I am against changing the group function. I am using this efficient definition in my packages and I rely on the performance characteristics. The current implementation is simple enough and also avoids allocation of the cons pair and the allocation of the lambda as in your proposal. The efficiency is crucial here. Furthermore I argue that the current implementation is simpler to understand for the completion table authors than your counter proposal, which introduces a deferred computation with the lambda. There was a long discussion with Stefan, Dmitry, Juri and Eli where multiple different designs for the `group-function` have been considered and we settled on the current design. Daniel