From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#43519: 28.0.50; Overlay at end of minibuf hides minibuf's real content Date: Mon, 21 Sep 2020 17:04:28 +0300 Message-ID: <83zh5jxm37.fsf@gnu.org> References: <83wo0p1twr.fsf@gnu.org> <83r1qx1q9v.fsf@gnu.org> <838sd425l2.fsf@gnu.org> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29725"; mail-complaints-to="usenet@ciao.gmane.io" Cc: monnier@iro.umontreal.ca, 43519@debbugs.gnu.org To: Gregory Heytings Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Sep 21 16:06:31 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kKMSd-0007d0-Ga for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 21 Sep 2020 16:06:31 +0200 Original-Received: from localhost ([::1]:53552 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kKMSc-00042z-Jc for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 21 Sep 2020 10:06:30 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:37960) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kKMRC-0002bc-IN for bug-gnu-emacs@gnu.org; Mon, 21 Sep 2020 10:05:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:43946) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kKMRC-0008Bk-8h for bug-gnu-emacs@gnu.org; Mon, 21 Sep 2020 10:05:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kKMRC-0003yH-4M for bug-gnu-emacs@gnu.org; Mon, 21 Sep 2020 10:05:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 21 Sep 2020 14:05:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 43519 X-GNU-PR-Package: emacs Original-Received: via spool by 43519-submit@debbugs.gnu.org id=B43519.160069708015226 (code B ref 43519); Mon, 21 Sep 2020 14:05:02 +0000 Original-Received: (at 43519) by debbugs.gnu.org; 21 Sep 2020 14:04:40 +0000 Original-Received: from localhost ([127.0.0.1]:55491 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kKMQl-0003xQ-4A for submit@debbugs.gnu.org; Mon, 21 Sep 2020 10:04:40 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:59158) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kKMQi-0003xD-Ct for 43519@debbugs.gnu.org; Mon, 21 Sep 2020 10:04:33 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:57501) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kKMQc-00089F-OG; Mon, 21 Sep 2020 10:04:26 -0400 Original-Received: from [176.228.60.248] (port=2362 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kKMQc-0002dQ-6o; Mon, 21 Sep 2020 10:04:26 -0400 In-Reply-To: (message from Gregory Heytings on Sun, 20 Sep 2020 21:31:21 +0000) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:188581 Archived-At: > Date: Sun, 20 Sep 2020 21:31:21 +0000 > From: Gregory Heytings > cc: Stefan Monnier , 43519@debbugs.gnu.org > > "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." > > I won't judge the "seems desirable generally", but in this case at least it is clearly not desirable, so there should be a way to do something else. The problem is what is that "something else", exactly, and how to specify that to redisplay in terms it can understand and follow. > More precisely, in this case height > max_height, so > > init_iterator (&it, w, ZV, ZV_BYTE, NULL, DEFAULT_FACE_ID); > > is called, followed by > > move_it_vertically_backward (&it, height - unit); > > which does nothing given that height == unit, so start is set to ZV. height == unit only when max_height = 1. But the same problem will happen if max_height = 2 and the stuff we want to display takes more than 2 screen lines, right? In those other cases, this code doesn't "do nothing". > What I would suggest is to add a user option to set start to BEGV when height > max_height, which is what is needed here. It would be reset to nil in read_minibuf() before calling minibuffer-setup-hook, and would be used in resize_mini_window() as follows: > > /* Compute a suitable window start. */ > if (height > max_height && !EQ (Vstart_display_at_beginning_of_minibuffer, Qt)) First, I'm not yet convinced starting at BOB is always TRT. For example, what if the prompt is very long and takes up more than one screen line? Second, it is not enough to set window-start to a particular buffer position, we must also make sure the position of point will be visible with that window-start. Otherwise, redisplay will override the window-start we set. So, before setting this flag, the application will still need some code to see if BOB is pertinent, i.e. consider the resulting layout, which is something you wanted to avoid in the first place. And finally, if a sufficiently generic solution that doesn't require external knobs can be devised, I'd prefer doing TRT automatically, without imposing such non-trivial settings on the application.