Subject: Re: bug#67715: 28.2; Minibuffer content is sometimes unexpectedly partially hidden

From: Markus Triska <[email-masked]>
Date: Sun, 10 Dec 2023 18:59:04 +0100

Eli Zaretskii <[email-masked]> writes:

> I'm showing you all the methods I can come up with.  Maybe Martin or
> others will have better ideas (so please don't elide their addresses
> when replying).

Yes thank you and Martin! Here is an example of my use case, using a
slight generalization of the original snippet:

    (let ((f (selected-frame)))
      ;; (with-selected-frame (make-frame)
      ;;   (switch-to-buffer (get-buffer-create "other")))
      (select-frame-set-input-focus f)
      (let ((win (get-buffer-window "other" t)))
        (when win
          (with-selected-window win
            (recenter 0)))
        (with-selected-window (minibuffer-window)
          (unwind-protect
              (progn
                (setq-local face-remapping-alist `((default :height 2.0)))
                (insert "M-x ")
                (read-key)
                (let ((chars (string-to-list "emacs-uptime")))
                  (while chars
                    (insert (char-to-string (pop chars)))
                    (when chars
                      (sit-for 0.3))))
                (read-key))
            (erase-buffer)))))

The snippet simulates what occurs if I were to press M-x, by inserting
"M-x " in the minibuffer. It then waits for a key press. After I press a
key, it simulates what would occur if I were to type emacs-uptime, by
writing "emacs-uptime" in the minibuffer in such a way that the
minibuffer content changes as if someone typed that command.

It all works as intended in all Emacs versions I tried, except if I
uncomment the two lines that are commented out in the snippet above:
Then, Emacs 28.2 and later versions no longer show the minibuffer fully.

Thank you and all the best,
Markus