unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "João Távora" <joaotavora@gmail.com>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: Daniel Mendler <mail@daniel-mendler.de>,
	Juri Linkov <juri@linkov.net>,
	Stefan Monnier <monnier@iro.umontreal.ca>,
	"emacs-devel@gnu.org" <emacs-devel@gnu.org>
Subject: Re: [PATCH] (icomplete-vertical-mode): Add support for affixations and, annotations
Date: Wed, 2 Jun 2021 00:22:44 +0100	[thread overview]
Message-ID: <CALDnm53E8yL__0CWzmCLGYvaaVu=eBkPiT3HK-Yw4ByJA_MMdA@mail.gmail.com> (raw)
In-Reply-To: <8e33bbfe-0015-b85c-b57c-ba448f2e6215@yandex.ru>

On Wed, Jun 2, 2021 at 12:04 AM Dmitry Gutov <dgutov@yandex.ru> wrote:
>
> On 01.06.2021 21:47, João Távora wrote:
> > In what way?  Really, all other things being equal, in what way is
> > threading arguments through lots of functions, bloating the arglist,
> > implementations and the docstrings of said functions, calling group-fun
> > multiple times and in multiple places in minibuffer.el better than_not_
> > doing those things?
>
> Why do you think it forces you to "thread" them?

The current implementation in minibuffer.el threads the function down
to the point where it is called twice again (once with the same
second argument -- a possible inefficiency -- and then with a non-nil
second argument). If the results of a single call were stored in
the candidate string, this wouldn't be necessary.

> Firs of all, you can construct the same composite values you wanted
> using the current calling convention of the group-function. And then use
> them the same way.

Indeed.  Indeed that does show that we simplify the code and can keep
the current calling convention.  But then why should we? Its akwardness
becomes even clearer there: calling the same function twice in quick
succession with different second arg for two different types of return value.
To save a cons?

> Whether this results in better minibuffer.el code is debatable: your
> diff has more additions than deletions, and one rather long line.

Oh sure, that function is slightly more complicated, but if you look at

completion--insert-strings
completion--insert-horizontal
completion--insert-vertical
completion--insert-one-column
display-completion-list
minibuffer-completion-help

You'll find they are all simplified.

> OTOH, someone in a different codebase might appreciate that the
> group-function decouples the mapping to group names from the
> transformations of the items, and thus one can do the latter closer to
> where the items are printed, instead of having to "thread" the
> transformed values to their place of use (from where the grouping logic
> was called).

Exactly, but my proposal doesn't prevent doing this near the
print locus.

> Using a text property is a handy workaround, but ideally one shouldn't
> have to use it.

There's nothing wrong with it? If you see a transformation function as
a property of a candidate (which it is in reality -- it's given by a fucntion of
a candidate), then it's something that fits naturally.  If a candidate was
some non-string object, I doubt that there would be any doubt as to what
to do here.  But just because it's a string doesn't change things that much.

João



  reply	other threads:[~2021-06-01 23:22 UTC|newest]

Thread overview: 177+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-22 21:00 [PATCH] (icomplete-vertical-mode): Add support for affixations and, annotations Daniel Mendler
2021-05-23  9:37 ` João Távora
     [not found]   ` <adbebf98-eb86-9b8b-f191-e2e9f00cf80b@daniel-mendler.de>
2021-05-23 19:55     ` João Távora
2021-05-23 20:14       ` Daniel Mendler
2021-05-23 21:04         ` João Távora
2021-05-23 21:31           ` Daniel Mendler
2021-05-23 21:54             ` João Távora
2021-05-23 22:38               ` Daniel Mendler
2021-05-24 22:46                 ` João Távora
2021-05-25  3:06                   ` Daniel Mendler
2021-05-25  9:21                     ` João Távora
2021-05-26 18:12                   ` João Távora
2021-05-26 19:32                     ` Daniel Semyonov via Emacs development discussions.
2021-05-23 23:04               ` Daniel Mendler
2021-05-23 23:39                 ` Stefan Monnier
2021-05-24 22:54                   ` João Távora
2021-05-25  1:38                     ` Stefan Monnier
2021-05-25  8:39                       ` João Távora
2021-05-25 11:00                         ` Gregory Heytings
2021-05-26  0:03                           ` João Távora
2021-05-25  3:12                     ` Daniel Mendler
2021-05-25  9:25                       ` João Távora
2021-05-24 19:05                 ` João Távora
2021-05-24 19:13                   ` João Távora
2021-05-24 19:53                     ` Daniel Mendler
2021-05-24 23:04                       ` João Távora
2021-05-25  3:14                         ` Daniel Mendler
2021-05-25  9:31                           ` João Távora
2021-05-25  9:40                             ` Daniel Mendler
2021-05-24 22:05                   ` Dmitry Gutov
2021-05-23 23:37             ` Juri Linkov
2021-05-23 23:39             ` Juri Linkov
2021-05-24 10:26               ` Daniel Mendler
2021-05-24 22:07                 ` Juri Linkov
2021-05-25  2:53                   ` Daniel Mendler
2021-05-25  8:30                     ` João Távora
2021-05-25 16:59                       ` Juri Linkov
2021-05-25 17:46                         ` João Távora
2021-05-25 20:37                           ` Juri Linkov
2021-05-26 21:45                             ` Juri Linkov
2021-05-26 22:20                               ` Dmitry Gutov
2021-05-26 23:17                                 ` João Távora
2021-05-27  1:06                                   ` Dmitry Gutov
2021-05-27  7:29                                     ` João Távora
2021-05-27 13:15                                       ` Dmitry Gutov
2021-05-27 14:19                                         ` João Távora
2021-05-27 18:52                                           ` Dmitry Gutov
2021-05-27 20:58                                             ` João Távora
2021-05-28  8:08                               ` Daniel Mendler
2021-05-28  8:34                                 ` João Távora
2021-05-28  9:06                                   ` Daniel Mendler
2021-05-28 10:09                                     ` João Távora
2021-05-28 11:16                                       ` Daniel Mendler
2021-05-28 11:41                                         ` João Távora
2021-05-28 11:55                                           ` Daniel Mendler
2021-05-28 12:15                                             ` João Távora
2021-05-28 12:32                                               ` Daniel Mendler
2021-05-28 13:17                                                 ` João Távora
2021-05-28 13:55                                                   ` Daniel Mendler
2021-05-28 18:46                                                 ` Juri Linkov
2021-05-29  8:11                                                   ` Daniel Mendler
2021-05-28 12:44                                             ` Dmitry Gutov
2021-05-28 13:14                                               ` Daniel Mendler
2021-05-28 13:57                                                 ` Dmitry Gutov
2021-05-28 14:10                                                   ` Daniel Mendler
2021-05-28 14:57                                                     ` Dmitry Gutov
2021-05-28 16:01                                                       ` Daniel Mendler
2021-06-01  9:56                                         ` João Távora
2021-06-01 11:27                                           ` Daniel Mendler
2021-06-01 12:00                                             ` João Távora
2021-06-01 12:37                                               ` Daniel Mendler
2021-06-01 14:30                                                 ` João Távora
2021-06-01 14:40                                                   ` Daniel Mendler
2021-06-01 15:49                                                     ` João Távora
2021-06-01 16:00                                                       ` Daniel Mendler
2021-06-01 18:47                                                         ` João Távora
2021-06-01 19:03                                                           ` Daniel Mendler
2021-06-01 22:32                                                             ` João Távora
2021-06-01 20:22                                                           ` Stefan Monnier
2021-06-01 22:39                                                             ` João Távora
2021-06-02  2:40                                                               ` Stefan Monnier
2021-06-02  7:53                                                                 ` João Távora
2021-06-02 13:48                                                                   ` Stefan Monnier
2021-06-01 23:04                                                           ` Dmitry Gutov
2021-06-01 23:22                                                             ` João Távora [this message]
2021-06-01 23:29                                                               ` João Távora
2021-06-01 23:46                                                               ` Dmitry Gutov
2021-06-02  0:02                                                                 ` João Távora
2021-06-02 11:48                                                                   ` Dmitry Gutov
2021-06-02 12:59                                                                     ` João Távora
2021-06-02 18:29                                                                       ` Dmitry Gutov
2021-06-02 18:52                                                                         ` João Távora
2021-06-02 14:19                                                                   ` complexity in minibuffer (was: (icomplete-vertical-mode): Add support for affixations and, annotations) Stefan Monnier
2021-06-02 14:33                                                                     ` João Távora
2021-06-02 15:06                                                                       ` complexity in minibuffer Stefan Monnier
2021-06-02 15:20                                                                         ` João Távora
2021-06-02 15:29                                                                           ` Dmitry Gutov
2021-06-02 15:37                                                                             ` João Távora
2021-06-02 18:11                                                                               ` Dmitry Gutov
2021-06-02 18:30                                                                                 ` João Távora
2021-06-02 15:38                                                                           ` Stefan Monnier
2021-06-02 15:45                                                                             ` João Távora
2021-06-02 15:59                                                                               ` Daniel Mendler
2021-06-02 16:29                                                                                 ` João Távora
2021-06-02 15:53                                                                             ` Daniel Mendler
2021-06-02 18:31                                                                         ` Dmitry Gutov
2021-06-02 19:03                                                                           ` João Távora
2021-06-02 20:15                                                                             ` Dmitry Gutov
2021-06-02 22:11                                                                       ` Juri Linkov
2021-06-03  9:04                                                                         ` João Távora
2021-06-03 20:28                                                                           ` Juri Linkov
2021-06-01 15:58                                                     ` [PATCH] (icomplete-vertical-mode): Add support for affixations and, annotations Stefan Monnier
2021-06-01 16:04                                                       ` Daniel Mendler
2021-06-02  5:17                                               ` tumashu
2021-06-02  7:48                                                 ` João Távora
2021-06-02 10:40                                                   ` Dmitry Gutov
2021-06-02 11:04                                                     ` João Távora
2021-06-02 11:28                                                       ` Dmitry Gutov
2021-06-02 11:33                                                         ` João Távora
2021-06-02 12:31                                                           ` Dmitry Gutov
2021-06-02 13:16                                                             ` João Távora
2021-06-05  1:48                                                               ` Dmitry Gutov
2021-06-05  9:21                                                                 ` João Távora
2021-06-05 23:06                                                                   ` Dmitry Gutov
2021-06-05 23:25                                                                     ` João Távora
2021-06-05  4:23                                                               ` Stefan Monnier
2021-06-05  9:26                                                                 ` João Távora
2021-06-05 13:02                                                                 ` Ergus
2021-06-05 23:47                                                                 ` Dmitry Gutov
2021-06-06  2:30                                                                   ` Stefan Monnier
2021-06-02 13:38                                                           ` Stefan Monnier
2021-06-02 14:11                                                             ` Dmitry Gutov
2021-06-02 14:54                                                               ` Stefan Monnier
2021-06-02 15:07                                                                 ` João Távora
2021-06-05  1:08                                                                   ` Dmitry Gutov
2021-06-05  9:16                                                                     ` João Távora
2021-06-01 14:47                                           ` Gregory Heytings
2021-06-01 14:53                                             ` Daniel Mendler
2021-06-01 14:58                                               ` Gregory Heytings
2021-06-01 15:06                                                 ` Daniel Mendler
2021-06-01 15:33                                                   ` Gregory Heytings
2021-06-01 15:41                                                     ` Daniel Mendler
2021-06-01 15:09                                                 ` João Távora
2021-06-01 15:12                                                   ` Daniel Mendler
2021-06-01 15:06                                             ` João Távora
     [not found]                                           ` <b49749e34d620592d83a@heytings.org>
     [not found]                                             ` <CALDnm53Wdnp0yAu6uQd8A=6-uLArCBEdj4F+aVzUdFOT00XMWw@mail.gmail.com>
     [not found]                                               ` <b49749e34dc4e4287593@heytings.org>
     [not found]                                                 ` <87lf7t8wfz.fsf@gmail.com>
2021-06-01 15:24                                                   ` Gregory Heytings
2021-06-01 23:05                                                     ` João Távora
2021-05-24 23:02                 ` Dmitry Gutov
2021-05-24 23:04                 ` Dmitry Gutov
2021-05-23 21:35           ` Daniel Mendler
2021-05-23 22:42           ` Dmitry Gutov
2021-05-23 23:33             ` Stefan Monnier
2021-05-23 23:42             ` Juri Linkov
2021-05-24 23:24               ` Dmitry Gutov
2021-05-23 23:35       ` Juri Linkov
2021-05-24  3:23         ` Stefan Monnier
2021-05-24 10:34           ` Daniel Mendler
2021-05-24 16:22             ` Caching where-is-internal (was: (icomplete-vertical-mode): Add support for affixations and, annotations) Stefan Monnier
2021-05-24 16:31               ` Daniel Mendler
2021-05-24 19:53                 ` Caching where-is-internal Stefan Monnier
2021-05-24 20:07                   ` Daniel Mendler
2021-05-24 20:33                     ` Stefan Monnier
2021-05-24 20:45                       ` Daniel Mendler
2021-05-24 21:44                         ` Stefan Monnier
2021-05-24 21:52           ` [PATCH] (icomplete-vertical-mode): Add support for affixations and, annotations Juri Linkov
2021-05-24 22:41             ` João Távora
2021-05-25  1:27             ` Stefan Monnier
2021-05-24 22:37         ` João Távora
2021-05-25 16:53           ` Juri Linkov
2021-05-25 17:24             ` Stefan Monnier
2021-05-25 17:40               ` João Távora
2021-05-25 20:01                 ` Stefan Monnier
2021-05-25 20:27                   ` Dmitry Gutov
2021-05-25 20:46                   ` João Távora
  -- strict thread matches above, loose matches on Subject: below --
2021-06-02  8:25 Manuel Uberti
2021-06-02 11:07 ` João Távora
2021-06-02 11:29   ` Manuel Uberti

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CALDnm53E8yL__0CWzmCLGYvaaVu=eBkPiT3HK-Yw4ByJA_MMdA@mail.gmail.com' \
    --to=joaotavora@gmail.com \
    --cc=dgutov@yandex.ru \
    --cc=emacs-devel@gnu.org \
    --cc=juri@linkov.net \
    --cc=mail@daniel-mendler.de \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).