unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Heime via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Eli Zaretskii <eliz@gnu.org>, 65459@debbugs.gnu.org
Subject: bug#65459: completing-read INITIAL-VALUE unaware of COLLECTION and REQUIRE-MATCH
Date: Thu, 24 Aug 2023 09:02:06 +0000	[thread overview]
Message-ID: <rv4Y4VumhXlap7W1L1IT0DwtGu2V3slt6UsldQkbBUfrCmj9G4eHMpKcRL6cJBZq33vyPoueD8Cbd1gLOThrx6-W-TusDJjKGvIOYQz4zwI=@protonmail.com> (raw)
In-Reply-To: <jwvedjt78ti.fsf-monnier+emacs@gnu.org>


------- Original Message -------
On Thursday, August 24th, 2023 at 9:27 AM, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> > > The normal/recommended call looks like:
> > > 
> > > (let ((cseq '("alpha" "beta" "gamma" "delta" "epsilon" "zeta" "eta")))
> > > (completing-read (format-prompt "Grapheme" "alpha")
> > > cseq nil t nil nil "alpha"))
> > > 
> > > [ Yes, it's a bit cumbersome: hysterical raisins :-( ] - Stefan
> > 
> > Correct. The solution involves an unwieldy parameter configurations, and possibly
> > using convoluted workarounds to achieve the desired behavior. This scenario implies
> > that using the function as intended requires a level of effort, understanding, and
> > manipulation that goes beyond direct usage.
> 
> 
> Agreed. That argues in favor of introducing a new function. But that
> new function would be so similar to `completing-read` that it will lead
> to users wondering when to use which or why there are two unless we mark
> `completing-read` as obsolete, which would in turn cause a lot of
> warnings in a lot of packages and code churn.
> 
> So, we've been hesitating to make this change for a while, not sure
> which choice is least bad.
> 
> But at this point do you consider the behavior of
> 
> (let ((cseq '("alpha" "beta" "gamma" "delta" "epsilon" "zeta" "eta")))
> (completing-read (format-prompt "Grapheme" "alpha")
> cseq nil t nil nil "alpha"))
> 
> to be a good solution for your original problem?

It is not, because the intention is on prefilling the minibuffer with "alpha"  
rather than considering "alpha" as DEF.  

It appears that the maintainers might not be prioritizing the initial intention
of prefilling the minibuffer.  Currently, their emphasis seems to be on encouraging 
developers to either utilize the "DEF" approach or actively discourage the use of 
"INITIAL".  But, I haven't come across a clear and well-founded reasoning behind 
these shifts in approach.

Let just remember that COLLECTION might already have been defined somewhere else
according to some arrangement rule regarding the order of its entries.  Rearranging
the actual order of elements in collection just to fit the limited requirements
of completing-read is not to be considered good function design.  Apart from the 
reality that rearranging the entries in COLLECTION might be difficult or even
impossible to achieve.  The example I show is straightforward in that you can see 
the entries and you can easily arrange them as you had suggested earlier
with

(let ((cseq '("epsilon" "zeta" "eta" "alpha" "beta" "gamma" "delta")))
  (completing-read "Grapheme: " cseq nil t "alpha"))

But this is only easily done only when collection is actually being constructed
in-place via the 'let' clause.   But once COLLECTION starts getting imported
from somewhere else (via a call to same other function for instance), your suggested
solution is impossible to achieve. 
 
> [ BTW, to me the main benefit of a new function is that we could try
> and make it so that the user can choose between a UI where the default
> is not inserted in the initial minibuffer (as in the above code), or
> one where it is (presumably pre-selected so you can delete it with
> a simple DEL), as is common in many other applications. ] - Stefan

I am neutral towards have two functions or a single one.

One can be considered as enhancing the functionaity of the other, leaving
the former for simpler use cases (and to conform in regards to backward 
compatibility) - if sensible names can be made up such that no confusion 
about their use can arise.  

Failing that, one can have a single function, where the coder can clearly
specify the way in which he wants it used.  Currently the design is for
completing-read to determine by itself the strategy it should use, without
giving the coder actual control on how completing-read should behave when 
one is faced with certain implementational circumstances where workarounds
are burdens to avoid rather than embrace.
 










  parent reply	other threads:[~2023-08-24  9:02 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-22 22:04 bug#65459: completing-read INITIAL-VALUE unaware of COLLECTION and REQUIRE-MATCH Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 11:29 ` Eli Zaretskii
2023-08-23 11:57   ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 13:07     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 15:29       ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 16:05         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 16:39           ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 16:58             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 18:12               ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 21:27                 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-23 22:44                   ` Drew Adams
2023-08-23 23:06                   ` Gregory Heytings
2023-08-24  2:30                     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 12:30                       ` Gregory Heytings
2023-08-24 13:19                         ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-25  6:59                           ` Juri Linkov
2023-08-24 13:46                         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-26  8:06                           ` Gregory Heytings
2023-08-31  9:42                             ` Eli Zaretskii
2023-09-04 21:35                             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-04 22:16                               ` Stefan Kangas
2023-09-05 11:05                               ` Eli Zaretskii
2023-09-05 12:59                                 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-09-05 13:14                                   ` Eli Zaretskii
2023-08-24  9:02                   ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2023-08-24 13:36                     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 14:51                       ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 16:45                         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 18:50                           ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 19:35                             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 20:22                               ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 21:02                                 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-24 21:45                                   ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-26  8:10                                   ` Gregory Heytings
2023-08-26 14:27                                     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27  6:45                                       ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 14:40                                         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 16:21                                           ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 16:26                                             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 16:35                                               ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 18:01                                                 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 21:11                                                   ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 21:48                                                     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 22:59                                                       ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-28  3:12                                                         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-28  9:14                                                           ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-28 12:44                                                             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-28 12:50                                                               ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-28 13:04                                                                 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-28 13:13                                                                   ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 16:42                                               ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 18:02                                                 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 20:54                                                   ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-27 21:26                                                   ` Heime via Bug reports for GNU Emacs, the Swiss army knife of text editors

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='rv4Y4VumhXlap7W1L1IT0DwtGu2V3slt6UsldQkbBUfrCmj9G4eHMpKcRL6cJBZq33vyPoueD8Cbd1gLOThrx6-W-TusDJjKGvIOYQz4zwI=@protonmail.com' \
    --to=bug-gnu-emacs@gnu.org \
    --cc=65459@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=heimeborgia@protonmail.com \
    --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).