From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.devel Subject: Re: Simplification of `affixation-function` Date: Wed, 28 Apr 2021 03:20:31 +0300 Message-ID: <35eddaa5-30fa-80db-7a29-3d171b5c09d6@yandex.ru> References: <87y2d777r2.fsf@mail.linkov.net> <35e2e508-cd0a-b921-af96-9c12da92faf3@yandex.ru> <126afe1f-8ac5-69fc-f6af-a586bc354d03@daniel-mendler.de> <1e9bb418-9f1a-68ee-14de-e68f30f88b0a@daniel-mendler.de> <50cfaa6f-67c0-117f-41b5-10fefabee0d2@yandex.ru> <8735vbr7w3.fsf@mail.linkov.net> 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="19729"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 Cc: Daniel Mendler , Stefan Monnier , emacs-devel@gnu.org To: Juri Linkov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Apr 28 02:21:25 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 1lbXxF-00052I-Gl for ged-emacs-devel@m.gmane-mx.org; Wed, 28 Apr 2021 02:21:25 +0200 Original-Received: from localhost ([::1]:53042 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbXxE-0004FB-F2 for ged-emacs-devel@m.gmane-mx.org; Tue, 27 Apr 2021 20:21:24 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51472) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lbXwT-0003l1-EY for emacs-devel@gnu.org; Tue, 27 Apr 2021 20:20:37 -0400 Original-Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]:55831) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lbXwR-0000xn-7C for emacs-devel@gnu.org; Tue, 27 Apr 2021 20:20:37 -0400 Original-Received: by mail-wm1-x333.google.com with SMTP id n127so20895058wmb.5 for ; Tue, 27 Apr 2021 17:20:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=hesQDlN9g83lb5h0AfbNP4nojukKN+C5Ji2N5iiTpJI=; b=UJYD7h3pU5kC5+b2yxJreRB+zhYfJpZcY/SXqfDiWy00dJxb3k+pQQDJk6/TF0vFKO j+yYn/g6HWeFt+EN0gYR23QXHOU3nJ68iiDq3dFRQar053vvVIC1QM0/H3B8eukaFYmd B9cMU/EyyUBJv3ipwfgiWQJzbLn9QZUyY8GVW/0M8wsha2a9plw7FF0ctPQTRCDBDwnO PNyvexAu2yivbld5EhY4djdWTPgSUSiOhhv402AM0LBWLc7QYuT0f1r0khqy7w6eJoVW d0VJUfXs8APmcmjLCaI3q+C2jZ2PvinkQa1MO6A0XPsBx5BCOdIQayL3JDq0mh6V+PZN OWag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=hesQDlN9g83lb5h0AfbNP4nojukKN+C5Ji2N5iiTpJI=; b=fE6l2Wu5ZRlptAlsSOLOz0tay9eXvAerHtIo9PsHNlkYXRw85dLmyDwo7I2DNflt+W cZk5di70k+8EQpRxH2yl6DT7tpFBNyTARJ2u5As7X8rP/ddwvmR7PF5JVJmjslFYZX0L ECWfjqqJN5dvWlIrQn6vs8hxp/SB4sAgzgDomkD6EcioP4e9pVp7DQfh1QK5tcwEBOeg Slu8q/TsdGac7D2k4OPsIUblqPTSJCREcAbBy7H7Wqx4sEHlt/3Rl1/QZL1LVtoS4YKG 6QvK5B9kAcRxUJv1z4j9LyetsVaMxPJ02vUYcg8JpiI5Yz3xyotsoqh4cC+Sf6Twqk3p lEMg== X-Gm-Message-State: AOAM532pCrTkBHAh/QPr/uPeXpZruv1NFJ/2e3EPxlYXkBE0W0WY9JEd +1KsU5GOji+4ALPaQnpTR+5O4vm9Bcg= X-Google-Smtp-Source: ABdhPJyMih1z+Bmgb0qoD2ilMz3Ppn+2nrb76DBAM9pZ9aaq37PnkS7pMaGJitxzeLaVg2+xjdAodg== X-Received: by 2002:a05:600c:3541:: with SMTP id i1mr955613wmq.97.1619569233450; Tue, 27 Apr 2021 17:20:33 -0700 (PDT) Original-Received: from [192.168.0.6] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id p5sm1387810wma.45.2021.04.27.17.20.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 27 Apr 2021 17:20:32 -0700 (PDT) In-Reply-To: <8735vbr7w3.fsf@mail.linkov.net> Content-Language: en-US Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=raaahh@gmail.com; helo=mail-wm1-x333.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.249, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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:268553 Archived-At: On 27.04.2021 19:48, Juri Linkov wrote: >> You can also note that the third (suffix) element is always an empty string >> in both of these use cases. So affixation-function was really added to be >> able to add a prefix. > > affixation-function was an improvement over annotation-function, > but nonetheless it has limitations too. What would be a better thing is > like Daniel proposed a new meta `group-function`, I'd imagine a similar > meta `format-function` that could receive a candidate and return > a string to insert to the completions buffer. That would also conflate information with presentation, and thus only be usable for the default completion UI. And not ideal even for that purpose. > Then the caller e.g. help--symbol-completion-table could define whether > to append "u", "a" and "c" in parens by using on a candidate something like > (format "%s (%s)" cand (cond ((fboundp (intern cand)) "f")) ...), > or prepend a dimmed letter as a prefix, or to use an icon. Do you use Company? Take a look at what elisp--company-kind does. The fact that the space of allowed values is constrained makes the returned information really more useful. And here since you do not document which values (strings, characters, etc) the prefix returned by affixation-function can take, their usefulness is limited. The user can't be sure what "c" means: it's "command" here, but could be meant as "constant" by another affixation function. Is "m" a "macro" or "method"? "f" stands for "function" or "field"? And also because of that no completing-read UI can replace these characters with any alternative (e.g. graphical) representation.