From: Gregory Heytings <gregory@heytings.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Dario Gjorgjevski <dario.gjorgjevski@gmail.com>,
45474@debbugs.gnu.org, Juri Linkov <juri@linkov.net>
Subject: bug#45474: Icomplete exhibiting in recursive minibuffer when it shouldn’t
Date: Mon, 19 Apr 2021 20:20:04 +0000 [thread overview]
Message-ID: <bb7c6f5fc9dc791a3102@heytings.org> (raw)
In-Reply-To: <jwvfszmuvvu.fsf-monnier+emacs@gnu.org>
>
> I think we should:
>
> - Do something along the lines of the whitelist approach, as the "long
> term" solution.
>
> - Add to it some "short term" heuristic (e.g. using something like the
> "equal keymap" or the minibuffer depth) that keeps it working for
> ivy-read and friends, maybe emitting a warning along the way (and with a
> clean way to silence this warning when it's a false positive) so we can
> remove the heuristic in Emacs-30.
>
> WDYT?
>
I've been thinking about this, and now have another potential solution in
mind, which I'm not sure it is feasible. The assumption of this idea is
that the present problem is an instance of a more general problem, i.e.
that similar problems will arise for other functions in the future. The
general idea is to make the following possible, when a function foo needs
to be changed to depend on some variable bar or to accept an additional
argument baz:
Emacs N:
- rename the function foo to internal-foo
- add a macro foo which (a) either calls internal-foo after setting bar or
baz to a default value that make internal-foo behave as foo in Emacs N -
1, or (b) calls internal-foo directly (i.e. assuming that bar or baz have
been set appropriately)
The macro would (and here I'm not sure it is feasible) expand to (a) for
external packages that have not yet been upgraded, and to (b) for those
who have been upgraded and for Emacs core. The question is: is it
possible to have a predicate function to distinguish those two cases?
Emacs N + 1:
- remove the macro foo
- rename the function internal-foo back to foo
To illustrate the above with the present problem, read-from-minibuffer
would depend on the value of completing-read-from-minibuffer, which would
default to nil for Emacs core (and packages that have been upgraded) and
would be let-bound to t in completing-read-default, and would default to t
for external packages (that have not yet been upgraded).
>> Yes, I understood this, but the effect of let-binding the var and make
>> it buffer-local after the minibuffer has been created but before the
>> minibuffer-setup-hook is executed is the same. Or am I missing
>> something?
>
> [ Note: I consider this part of the discussion as not directly relevant
> to bug#45474. ]
>
Indeed ;-) I guess the above idea is also a bit far from bug#45474...
>
> Oh, so `read-from-minibuffer` receives it as an "implicit argument" vet
> dynamically scoped let-binding and then sets it buffer locally?
>
Exactly. It receives an argument through its environment instead of an
explicit one.
next prev parent reply other threads:[~2021-04-19 20:20 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-27 17:44 bug#45474: Icomplete exhibiting in recursive minibuffer when it shouldn’t Dario Gjorgjevski
2021-04-15 17:40 ` Gregory Heytings
2021-04-15 21:11 ` Juri Linkov
2021-04-15 22:34 ` Gregory Heytings
2021-04-16 0:03 ` Gregory Heytings
2021-04-16 16:34 ` Juri Linkov
2021-04-16 16:55 ` Gregory Heytings
2021-04-17 20:49 ` Juri Linkov
2021-04-17 21:35 ` Gregory Heytings
2021-04-17 21:58 ` Stefan Monnier
2021-04-17 22:16 ` Gregory Heytings
2021-04-18 14:44 ` Stefan Monnier
2021-04-18 22:23 ` Gregory Heytings
2021-04-19 1:26 ` Stefan Monnier
2021-04-19 12:14 ` Gregory Heytings
2021-04-19 15:57 ` Stefan Monnier
2021-04-19 20:20 ` Gregory Heytings [this message]
2021-04-17 23:21 ` bug#45474: [External] : " Drew Adams
2021-04-18 3:59 ` Stefan Monnier
2021-04-18 4:04 ` Drew Adams
2021-04-18 5:08 ` Stefan Monnier
2021-04-18 15:42 ` Drew Adams
2021-04-18 18:35 ` Stefan Monnier
2021-04-18 20:11 ` Drew Adams
2021-04-18 20:53 ` Stefan Monnier
2021-04-18 23:46 ` Drew Adams
2021-04-22 15:03 ` Stefan Monnier
2021-04-19 18:16 ` Juri Linkov
2021-04-19 21:42 ` Stefan Monnier
2021-04-20 19:00 ` Gregory Heytings
2021-04-22 13:56 ` Stefan Monnier
2021-04-22 14:08 ` Gregory Heytings
2021-04-20 19:01 ` Juri Linkov
2021-04-22 13:54 ` Stefan Monnier
2021-04-22 14:13 ` Stefan Monnier
2021-04-22 14:18 ` Gregory Heytings
2021-04-22 15:18 ` Gregory Heytings
2021-04-22 18:36 ` Stefan Monnier
2021-04-22 19:04 ` Gregory Heytings
2021-04-22 19:59 ` Gregory Heytings
2021-04-22 20:57 ` Gregory Heytings
2021-04-22 23:24 ` Stefan Monnier
2021-04-23 6:06 ` Eli Zaretskii
2021-04-23 13:12 ` Stefan Monnier
2021-04-23 13:19 ` Eli Zaretskii
2021-04-23 15:18 ` Stefan Monnier
2021-04-23 17:37 ` Eli Zaretskii
2021-04-23 6:59 ` Gregory Heytings
2021-04-23 13:21 ` Stefan Monnier
2021-04-23 13:45 ` Gregory Heytings
2021-04-23 15:35 ` Stefan Monnier
2021-04-23 15:58 ` Gregory Heytings
2021-04-23 16:36 ` Juri Linkov
2021-04-23 16:55 ` Stefan Monnier
2021-04-23 18:13 ` Gregory Heytings
2021-04-23 20:24 ` Stefan Monnier
2021-04-23 21:36 ` Gregory Heytings
2021-04-23 21:54 ` Stefan Monnier
2021-04-24 8:44 ` Gregory Heytings
2021-05-01 19:34 ` Stefan Monnier
2021-05-03 8:40 ` Gregory Heytings
2022-06-07 12:04 ` Lars Ingebrigtsen
2021-04-22 21:57 ` Juri Linkov
2021-04-23 15:53 ` Stefan Monnier
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=bb7c6f5fc9dc791a3102@heytings.org \
--to=gregory@heytings.org \
--cc=45474@debbugs.gnu.org \
--cc=dario.gjorgjevski@gmail.com \
--cc=juri@linkov.net \
--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).