From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Gregory Heytings <ghe@sdf.org>
Cc: 43519@debbugs.gnu.org
Subject: bug#43519: 28.0.50; Overlay at end of minibuf hides minibuf's real content
Date: Wed, 23 Sep 2020 14:35:00 -0400 [thread overview]
Message-ID: <jwvr1qstkad.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <alpine.NEB.2.22.394.2009212240070453.4527@sdf.lonestar.org> (Gregory Heytings's message of "Mon, 21 Sep 2020 20:49:05 +0000")
>>> IOW, you leave it entirely to the generic window-display code to select
>>> window-start based just on the value of point?
>> Yes. It seems to work very well. Even the corner case regression above
>> doesn't seem very serious and can be addressed using the
>> scroll_conservatively code.
> A last note: w->start has already been set to its default value (BEGV) just
> after entering resize_mini_window(), so the else part in your patch is not
> necessary anymore. Your code has the same effect as simply doing:
> if (height > max_height) height = (max_height / unit) * unit;
> in place of the "Compute a suitable window start" part.
Indeed, except that I (later) also removed that setting of w->start.
Stefan
diff --git a/src/xdisp.c b/src/xdisp.c
index c05f97173d..c73212174a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -11799,10 +11799,10 @@ resize_mini_window_1 (void *a1, Lisp_Object exactly)
means size the window exactly to the size needed. Otherwise, it's
only enlarged until W's buffer is empty.
- Set W->start to the right place to begin display. If the whole
- contents fit, start at the beginning. Otherwise, start so as
- to make the end of the contents appear. This is particularly
- important for y-or-n-p, but seems desirable generally.
+ If the whole contents fit, set W->start at the beginning.
+ Otherwise, let redisplay do its thing to make sure point is displayed,
+ so we can control which part is more important by placing point
+ accordingly.
Value is true if the window height has been changed. */
@@ -11824,9 +11824,10 @@ resize_mini_window (struct window *w, bool exact_p)
return false;
/* By default, start display at the beginning. */
- set_marker_both (w->start, w->contents,
- BUF_BEGV (XBUFFER (w->contents)),
- BUF_BEGV_BYTE (XBUFFER (w->contents)));
+ /* bug#43519: Let the redisplay choose the window start!
+ * set_marker_both (w->start, w->contents,
+ * BUF_BEGV (XBUFFER (w->contents)),
+ * BUF_BEGV_BYTE (XBUFFER (w->contents))); */
/* Nil means don't try to resize. */
if ((NILP (Vresize_mini_windows)
@@ -11885,24 +11886,18 @@ resize_mini_window (struct window *w, bool exact_p)
if (height > max_height)
{
height = (max_height / unit) * unit;
- init_iterator (&it, w, ZV, ZV_BYTE, NULL, DEFAULT_FACE_ID);
- move_it_vertically_backward (&it, height - unit);
- /* The following move is usually a no-op when the stuff
- displayed in the mini-window comes entirely from buffer
- text, but it is needed when some of it comes from overlay
- strings, especially when there's an after-string at ZV.
- This happens with some completion packages, like
- icomplete, ido-vertical, etc. With those packages, if we
- don't force w->start to be at the beginning of a screen
- line, important parts of the stuff in the mini-window,
- such as user prompt, will be hidden from view. */
- move_it_by_lines (&it, 0);
- start = it.current.pos;
+ /* bug#43519: Let the redisplay choose the window start!
+ *
+ * init_iterator (&it, w, ZV, ZV_BYTE, NULL, DEFAULT_FACE_ID);
+ * move_it_vertically_backward (&it, height - unit);
+ * start = it.current.pos; */
}
else
- SET_TEXT_POS (start, BEGV, BEGV_BYTE);
+ {
+ SET_TEXT_POS (start, BEGV, BEGV_BYTE);
- SET_MARKER_FROM_TEXT_POS (w->start, start);
+ SET_MARKER_FROM_TEXT_POS (w->start, start);
+ }
if (EQ (Vresize_mini_windows, Qgrow_only))
{
@@ -18923,6 +18918,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
/* Try to scroll by specified few lines. */
if ((0 < scroll_conservatively
+ || MINI_WINDOW_P (w)
|| 0 < emacs_scroll_step
|| temp_scroll_step
|| NUMBERP (BVAR (current_buffer, scroll_up_aggressively))
@@ -18933,7 +18929,9 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
/* The function returns -1 if new fonts were loaded, 1 if
successful, 0 if not successful. */
int ss = try_scrolling (window, just_this_one_p,
- scroll_conservatively,
+ (MINI_WINDOW_P (w)
+ ? SCROLL_LIMIT + 1
+ : scroll_conservatively),
emacs_scroll_step,
temp_scroll_step, last_line_misfit);
switch (ss)
next prev parent reply other threads:[~2020-09-23 18:35 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
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 [this message]
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
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=jwvr1qstkad.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=43519@debbugs.gnu.org \
--cc=ghe@sdf.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 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).