emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Stepping Back: A Wealth Of Completion systems Re: [ELPA] New package


From: Eric Abrahamsen
Subject: Re: Stepping Back: A Wealth Of Completion systems Re: [ELPA] New package: vertico
Date: Wed, 07 Apr 2021 09:02:49 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Gregory Heytings <gregory@heytings.org> writes:

>>
>> I have the feeling all these completion systems are encouraging
>> confusion around how to use completing-read. That is the 0th point
>> that is missing here: Are you completing (expanding text) or
>> selecting (narrowing options).
>>
>
> I've been thinking about this, and I'm not sure I understand what the
> real difference between "completing" and "selecting" is.  Do I
> understand correctly that the difference is between, for example,
> expanding command names (completing), and choosing an emoji in a list
> (selecting)?

"Completing" is "help me make this string longer based on available
options" and "selecting" is "choose one of these things".

Yes, they're often collapsed into one, but they don't *have* to be, for
one thing, and for another I was thinking about this more in terms of
developer convenience than making some revolutionary change to the UI.

We've all written this a million times:

(let* ((choices (mapcar (lambda (elt)
                          (cons (make-string-from-thing elt)
                                elt))
                        my-list-of-things))
       (choice (completing-read "Choose: "
                                choices)))
  (cdr (assoc-string choice choices)))

If we put a little work into refactoring, and make a `selecting-read'
function that accepts a few other functions for doing the actual
selections, then why _not_ allow choosing from a list by number key, or
character key? Or for small collections, simply C-f/C-b and then RET? Or
cycling through a collection of buffers, displaying one buffer per
second, and letting the user hit RET when they see the one they want?
Okay that sounds awful, but flexibility is good.

I find myself wanting/needing to tailor the actual strings I produce for
collections based on the completion framework in use (ie what works well
for Helm feels awkward in Ivy, or in vanilla completion). That seems
wrong.

Anyway, that was my take on a discussion that didn't originally have
anything to do with me!

Eric



reply via email to

[Prev in Thread] Current Thread [Next in Thread]