unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Gregory Heytings via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 43572@debbugs.gnu.org
Subject: bug#43572: Feature request: make it possible to choose whether the first lines of the minibuffer should be displayed instead of the last ones
Date: Thu, 24 Sep 2020 21:51:43 +0000	[thread overview]
Message-ID: <alpine.NEB.2.22.394.2009242034030453.28058@sdf.lonestar.org> (raw)
In-Reply-To: <83eemrt8da.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 1213 bytes --]


>> I can't believe this, in particular given that the default value of 
>> enable-recursive-minibuffers is nil.
>
> You again are thinking only about uses of mini-window for editing in the 
> minibuffer.  But that is not the only use of the mini-window.
>

I'm not sure I understand what you mean, but it seems to me that these 
other uses of the mini-window are not at all affected by the proposed 
patch, given that `start-display-at-beginning-of-minibuffer' is reset 
immediately when read_minibuf() / read-from-minibuffer has ended.

>
> And even in its use for the minibuffer, many users enable recursive 
> minibuffers.  I would not be surprised if some specialized modes and 
> packages enabled it for their operations.
>

If this case is important, the attached corrected patch also disables 
setting `start-display-at-beginning-of-minibuffer' in recursive 
minibuffers, that is, it limits the effect of that variable to 
non-recursive minibuffers.

I'll wait until you and Stefan agree on the way to solve that problem in a 
better way to start working on this.  In his last mail he is apparently 
not sure anymore that using text properties to do this, as he suggested 
yesterday, is the best solution.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-diff; name=start-display-at-beginning-of-minibuffer.patch, Size: 2948 bytes --]

diff --git a/src/minibuf.c b/src/minibuf.c
index f957b2ae17..75ab82278b 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -472,6 +472,8 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
     = Fcons (Voverriding_local_map,
 	     Fcons (minibuf_window,
 		    minibuf_save_list));
+  minibuf_save_list
+    = Fcons (Vstart_display_at_beginning_of_minibuffer, minibuf_save_list);
   minibuf_save_list
     = Fcons (minibuf_prompt,
 	     Fcons (make_fixnum (minibuf_prompt_width),
@@ -659,6 +661,8 @@ read_minibuf (Lisp_Object map, Lisp_Object initial, Lisp_Object prompt,
 
   run_hook (Qminibuffer_setup_hook);
 
+  if (minibuf_level > 1) Vstart_display_at_beginning_of_minibuffer = Qnil;
+
   /* Don't allow the user to undo past this point.  */
   bset_undo_list (current_buffer, Qnil);
 
@@ -802,6 +806,8 @@ read_minibuf_unwind (void)
   minibuf_save_list = Fcdr (minibuf_save_list);
   Vminibuffer_history_variable = Fcar (minibuf_save_list);
   minibuf_save_list = Fcdr (minibuf_save_list);
+  Vstart_display_at_beginning_of_minibuffer = Fcar (minibuf_save_list);
+  minibuf_save_list = Fcdr (minibuf_save_list);
   Voverriding_local_map = Fcar (minibuf_save_list);
   minibuf_save_list = Fcdr (minibuf_save_list);
 #if 0
@@ -2097,6 +2103,15 @@ syms_of_minibuf (void)
 uses to hide passwords.  */);
   Vread_hide_char = Qnil;
 
+  DEFVAR_LISP ("start-display-at-beginning-of-minibuffer", Vstart_display_at_beginning_of_minibuffer,
+	       doc: /* Whether to preferably display the beginning of the minibuffer.
+When the mini-window is not large enough to display the complete minibuffer,
+the default behavior is to display the last part of the minibuffer and to
+hide its first part.  This variable reverses that behavior when it is set
+in `minibuffer-setup-hook'.  It is reset before and after each read from
+the minibuffer, and unset in recursive minibuffers.  */);
+  Vstart_display_at_beginning_of_minibuffer = Qnil;
+
   defsubr (&Sactive_minibuffer_window);
   defsubr (&Sset_minibuffer_window);
   defsubr (&Sread_from_minibuffer);
diff --git a/src/xdisp.c b/src/xdisp.c
index 49225c56fe..1b1a34b97f 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -11804,7 +11804,7 @@ resize_mini_window (struct window *w, bool exact_p)
 	}
 
       /* Compute a suitable window start.  */
-      if (height > max_height)
+      if (height > max_height && !EQ (Vstart_display_at_beginning_of_minibuffer, Qt))
 	{
 	  height = (max_height / unit) * unit;
 	  init_iterator (&it, w, ZV, ZV_BYTE, NULL, DEFAULT_FACE_ID);
@@ -11812,7 +11812,10 @@ resize_mini_window (struct window *w, bool exact_p)
 	  start = it.current.pos;
 	}
       else
-	SET_TEXT_POS (start, BEGV, BEGV_BYTE);
+	{
+	  if (height > max_height) height = (max_height / unit) * unit;
+	  SET_TEXT_POS (start, BEGV, BEGV_BYTE);
+	}
 
       SET_MARKER_FROM_TEXT_POS (w->start, start);
 

  reply	other threads:[~2020-09-24 21:51 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-22 20:57 bug#43572: Feature request: make it possible to choose whether the first lines of the minibuffer should be displayed instead of the last ones Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-23 15:17 ` Eli Zaretskii
2020-09-23 19:15   ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-23 19:37     ` Eli Zaretskii
2020-09-23 20:15       ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-24 14:24         ` Eli Zaretskii
2020-09-24 14:41           ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-24 15:11             ` Eli Zaretskii
2020-09-24 16:09               ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-24 16:20                 ` Eli Zaretskii
2020-09-24 16:40                   ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-24 17:03                     ` Eli Zaretskii
2020-09-24 21:51                       ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2020-09-25  6:59                         ` Eli Zaretskii
2020-09-25  8:34                           ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-25  9:14                             ` Eli Zaretskii
2020-09-25 10:14                               ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-25 11:17                                 ` Eli Zaretskii
2020-09-25 11:34                                   ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-23 22:59       ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-25 18:31   ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-23 18:33 ` Stefan Monnier
2020-09-23 18:47   ` Eli Zaretskii
2020-09-23 23:18     ` Stefan Monnier
2020-09-24 14:34       ` Eli Zaretskii
2020-09-24 16:44         ` Stefan Monnier
2020-09-24 16:59           ` Eli Zaretskii
2020-09-27 21:59             ` Stefan Monnier
2020-09-28  6:20               ` Eli Zaretskii
2020-09-28 13:30                 ` Stefan Monnier
2020-09-28 13:44                   ` Eli Zaretskii
2020-09-28 16:58                     ` Stefan Monnier
2020-10-02 15:40                       ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-10-02 16:08                         ` Stefan Monnier
2020-10-02 16:11                         ` Eli Zaretskii
2020-10-02 16:25                           ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-10-02 19:30                             ` Eli Zaretskii
2020-10-02 21:49                               ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-04-29 14:02                         ` Lars Ingebrigtsen
2020-09-23 19:46   ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-23 20:00     ` Stefan Monnier
2020-09-23 22:47       ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-23 23:20         ` Stefan Monnier
2020-09-23 23:26           ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-24  2:07             ` Stefan Monnier
2020-09-24  7:45               ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-24 16:26                 ` Stefan Monnier
2020-09-24  8:06               ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-24 14:43                 ` Eli Zaretskii
2020-09-24 14:52                   ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-24 15:20                     ` Eli Zaretskii
2020-09-24 14:26         ` Eli Zaretskii
2020-09-24 14:20     ` Eli Zaretskii
2020-09-24 14:27       ` Gregory Heytings via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-24 16:40       ` Stefan Monnier
2020-09-24 16:54         ` Eli Zaretskii
2020-09-27 16:11           ` Eli Zaretskii
2020-09-27 21:52             ` Stefan Monnier
2020-09-28  6:10               ` Eli Zaretskii
2020-09-28 13:24                 ` Stefan Monnier
2020-09-28 13:42                   ` Eli Zaretskii
2020-09-28 16:56                     ` Stefan Monnier
     [not found] <<alpine.NEB.2.22.394.2009222215560453.32542@sdf.lonestar.org>
     [not found] ` <<jwvwo0ktlge.fsf-monnier+emacs@gnu.org>
     [not found]   ` <<alpine.NEB.2.22.394.2009232116430453.29439@sdf.lonestar.org>
     [not found]     ` <<834knnuugm.fsf@gnu.org>
     [not found]       ` <<jwvimc3p2a0.fsf-monnier+emacs@gnu.org>
     [not found]         ` <<83h7rnt8s3.fsf@gnu.org>
     [not found]           ` <<833633nqru.fsf@gnu.org>
     [not found]             ` <<jwvwo0e6gcb.fsf-monnier+emacs@gnu.org>
     [not found]               ` <<83r1qmmnxu.fsf@gnu.org>
2020-09-28 15:53                 ` 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=alpine.NEB.2.22.394.2009242034030453.28058@sdf.lonestar.org \
    --to=bug-gnu-emacs@gnu.org \
    --cc=43572@debbugs.gnu.org \
    --cc=eliz@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).