From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 43519@debbugs.gnu.org
Subject: bug#43519: 28.0.50; Overlay at end of minibuf hides minibuf's real content
Date: Sat, 19 Sep 2020 18:06:20 -0400 [thread overview]
Message-ID: <jwvzh5l8med.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <83r1qx1q9v.fsf@gnu.org> (Eli Zaretskii's message of "Sat, 19 Sep 2020 23:10:36 +0300")
>> I disagree: icomplete merely added text after point via an overlay and
>> didn't do anything which explicitly justifies horizontal scrolling.
>
> Maybe I'm missing something, but what does the code in
> icomplete-completions that calls string-width and window-width try to
> do, then? I mean this part:
>
> ;;"-prospects" - more than one candidate
> (prospects-len (+ (string-width
> (or determ (concat open-bracket close-bracket)))
> (string-width icomplete-separator)
> (+ 2 (string-width ellipsis)) ;; take {…} into account
> (string-width (buffer-string))))
> (prospects-max
> ;; Max total length to use, including the minibuffer content.
> (* (+ icomplete-prospects-height
> ;; If the minibuffer content already uses up more than
> ;; one line, increase the allowable space accordingly.
> (/ prospects-len (window-width)))
> (window-width)))
That's not relevant to the issue at hand. I used `icomplete-mode` only
as a vehicle to show the underlying behavior with a short recipe which
exhibits a real-life problem.
>> > It should produce an overlay string that fits in the window, then the
>> > prompt will be visible.
>> That would merely work around the underlying problem
> What do you think is the underlying problem?
That the redisplay performed horizontal scrolling when it was not needed
since the cursor was already visible without such scrolling.
>> (and as you know it's wickedly difficult to construct a string which
>> will have "just the right size" to fit into the minibuffer window).
> It doesn't have to be "just the right size", it could err on the safe
> side. It already attempts to do so, by avoiding truncation in the
> middle of a candidate. It should just do a better job, that's all.
And how do we generalize that to the case where the overlay contains
newlines, TABs, chars in different scripts using different fonts,
different faces, images, etc.... ?
>> Maybe there's a good reason for the redisplay to behave this way
> Behave in what way? what's special about what you see on display in
> this case, given the contents of the mini-window's buffer?
Try the recipe below instead:
(minibuffer-with-setup-hook
(lambda ()
(insert "hello")
(let ((ol (make-overlay (point) (point)))
(max-mini-window-height 1)
(text "askdjfhaklsjdfhlkasjdfhklasdhflkasdhflkajsdhflkashdfkljahsdlfkjahsdlfkjhasldkfhalskdjfhalskdfhlaksdhfklasdhflkasdhflkasdhflkajsdhklajsdgh"))
(save-excursion (insert text))
(sit-for 2)
(delete-region (point) (point-max))
(put-text-property 0 1 'cursor t text)
(overlay-put ol 'after-string text)
(sit-for 2)
(delete-overlay ol)))
(read-string "toto: "))
This performs "display of text after point" in 2 different ways:
- first by `insert`.
- then with an overlay.
The visual rendering of the text is the same, with the cursor at the
same place. When we do it with `insert` there is no horizontal
scrolling, but when we do it with an overlay the text gets scrolled so
the cursor is at `window-start`.
`icomplete` needs the behavior to be the same as with `insert`, but it
prefers to use an overlay to avoid some undesirable side-effects of
modifying the actual text.
So the question is: how to get the same behavior as what we'd get with
`insert` but without actually modifying the buffer's contents?
Is it more clear now?
Stefan
next prev parent reply other threads:[~2020-09-19 22:06 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-19 17:54 bug#43519: 28.0.50; Overlay at end of minibuf hides minibuf's real content Stefan Monnier
2020-09-19 18:52 ` Eli Zaretskii
2020-09-19 19:42 ` Stefan Monnier
2020-09-19 20:10 ` Eli Zaretskii
2020-09-19 22:06 ` Stefan Monnier [this message]
2020-09-20 8:52 ` Eli Zaretskii
2020-09-20 21:04 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-20 21:31 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 6:50 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 14:17 ` Eli Zaretskii
2020-09-21 15:02 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 15:33 ` Eli Zaretskii
2020-09-21 15:44 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 16:10 ` Eli Zaretskii
2020-09-21 16:27 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 17:30 ` Eli Zaretskii
2020-09-21 18:42 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 19:37 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 19:37 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-22 6:57 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-22 6:57 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-22 14:11 ` Eli Zaretskii
2020-09-22 15:52 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-22 16:10 ` Eli Zaretskii
2020-09-22 21:01 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 17:28 ` Stefan Monnier
2020-09-21 17:47 ` Eli Zaretskii
2020-09-21 18:45 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 19:37 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-22 6:58 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-22 14:14 ` Eli Zaretskii
2020-09-21 14:04 ` Eli Zaretskii
2020-09-21 14:31 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 14:47 ` Eli Zaretskii
2020-09-21 14:02 ` Eli Zaretskii
2020-09-21 14:18 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 14:45 ` Eli Zaretskii
2020-09-21 15:26 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 15:39 ` Eli Zaretskii
2020-09-21 16:00 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-20 22:40 ` Stefan Monnier
2020-09-21 7:04 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 14:05 ` Eli Zaretskii
2020-09-21 17:25 ` Stefan Monnier
2020-09-21 17:45 ` Eli Zaretskii
2020-09-21 19:17 ` Stefan Monnier
2020-09-21 19:47 ` Eli Zaretskii
2020-09-22 5:26 ` Eli Zaretskii
2020-09-22 14:00 ` Stefan Monnier
2020-09-22 14:02 ` Eli Zaretskii
2020-09-22 15:51 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-22 16:06 ` Eli Zaretskii
2020-09-22 16:17 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-22 16:47 ` Eli Zaretskii
2020-09-22 16:49 ` Eli Zaretskii
2020-09-22 20:06 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-23 2:40 ` Eli Zaretskii
2020-09-23 7:15 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-23 14:34 ` Eli Zaretskii
2020-09-21 20:05 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-21 20:49 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-23 18:35 ` Stefan Monnier
2020-09-22 6:58 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-22 6:58 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-20 1:00 ` bug#43519: (no subject) Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-20 6:08 ` Eli Zaretskii
2020-09-20 8:27 ` bug#43519: 28.0.50; Overlay at end of minibuf hides minibuf's real content Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-20 9:03 ` Eli Zaretskii
2020-09-20 10:12 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-20 10:52 ` Eli Zaretskii
2020-09-20 19:50 ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
[not found] <<jwvft7dveii.fsf@iro.umontreal.ca>
[not found] ` <<83wo0p1twr.fsf@gnu.org>
[not found] ` <<jwvh7rta7et.fsf-monnier+emacs@gnu.org>
[not found] ` <<83r1qx1q9v.fsf@gnu.org>
[not found] ` <<jwvzh5l8med.fsf-monnier+emacs@gnu.org>
[not found] ` <<838sd425l2.fsf@gnu.org>
[not found] ` <<jwvd02g5bnp.fsf-monnier+emacs@gnu.org>
[not found] ` <<83y2l3xm15.fsf@gnu.org>
[not found] ` <<jwvwo0n2hgh.fsf-monnier+emacs@gnu.org>
[not found] ` <<83eemvxbvg.fsf@gnu.org>
[not found] ` <<jwv363b2b48.fsf@iro.umontreal.ca>
[not found] ` <<837dsmykrn.fsf@gnu.org>
[not found] ` <<E1kKapF-0007yc-Mb@fencepost.gnu.org>
[not found] ` <<831ritykni.fsf@gnu.org>
[not found] ` <<alpine.NEB.2.22.394.2009221712130453.10035@sdf.lonestar.org>
[not found] ` <<83k0wlx0cz.fsf@gnu.org>
[not found] ` <<alpine.NEB.2.22.394.2009221808130453.16638@sdf.lonestar.org>
[not found] ` <<83d02dwyfa.fsf@gnu.org>
2020-09-22 20:03 ` Drew Adams
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=jwvzh5l8med.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=43519@debbugs.gnu.org \
--cc=eliz@gnu.org \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.