unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@linkov.net>
To: martin rudalics <rudalics@gmx.at>
Cc: Michael Heerdegen <michael_heerdegen@web.de>,
	63455@debbugs.gnu.org, dgutov@yandex.ru
Subject: bug#63455: 30.0.50; display-buffer-in-direction is always resizing
Date: Wed, 17 May 2023 19:56:56 +0300	[thread overview]
Message-ID: <86jzx6lvxz.fsf@mail.linkov.net> (raw)
In-Reply-To: <77edb1db-13ad-fa1d-d1fc-7a23f0b6240d@gmx.at> (martin rudalics's message of "Fri, 12 May 2023 09:39:40 +0200")

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

> 'temp-buffer-window-show' has a third argument NO-RESIZE and its last
> lines are rewritten as
>
> 	(with-selected-window window
> 	  (run-hooks 'temp-buffer-window-show-hook)
> 	  (when (and (not no-resize) temp-buffer-resize-mode)
> 	    (resize-temp-buffer-window window)))
> 	;; Return the window.
> 	window))))
>
> Maybe Juri can make heads or tails of this.

Does your complete patch look like this?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: bug_63455.patch --]
[-- Type: text/x-diff, Size: 4422 bytes --]

diff --git a/lisp/files.el b/lisp/files.el
index 148f47cbc97..b3962145e79 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3772,7 +3772,8 @@ hack-local-variables-confirm
 
       ;; Display the buffer and read a choice.
       (save-window-excursion
-	(pop-to-buffer buf '(display-buffer--maybe-at-bottom))
+	(pop-to-buffer buf '(display-buffer--maybe-at-bottom
+			     (window-height . fit-window-to-buffer)))
 	(let* ((exit-chars '(?y ?n ?\s))
 	       (prompt (format "Please type %s%s: "
 			       (if offer-save
diff --git a/lisp/help.el b/lisp/help.el
index 6f55136049b..676c18f2411 100644
--- a/lisp/help.el
+++ b/lisp/help.el
@@ -2175,7 +2175,8 @@ help--window-setup
     (setq-local help-mode--current-data nil)
     (buffer-disable-undo)
     (let ((inhibit-read-only t)
-	  (inhibit-modification-hooks t))
+	  (inhibit-modification-hooks t)
+	  window)
       (erase-buffer)
       (delete-all-overlays)
       (prog1
@@ -2186,7 +2187,12 @@ help--window-setup
         (help-make-xrefs (current-buffer))
         ;; This must be done after the buffer has been completely
         ;; generated, since `temp-buffer-resize-mode' may be enabled.
-        (help-window-setup (temp-buffer-window-show (current-buffer)))))))
+        (help-window-setup
+         (setq window (temp-buffer-window-show (current-buffer) nil t)))
+        (help-make-xrefs (current-buffer))
+        (when (and window temp-buffer-resize-mode)
+          (let (resize-temp-buffer-window-inhibit)
+            (resize-temp-buffer-window window)))))))
 
 ;; Called from C, on encountering `help-char' when reading a char.
 ;; Don't print to *Help*; that would clobber Help history.
diff --git a/lisp/window.el b/lisp/window.el
index aa7520f30fa..b816d10298a 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -110,7 +110,7 @@ temp-buffer-window-setup
 ;; Defined in help.el.
 (defvar resize-temp-buffer-window-inhibit)
 
-(defun temp-buffer-window-show (buffer &optional action)
+(defun temp-buffer-window-show (buffer &optional action no-resize)
   "Show temporary buffer BUFFER in a window.
 Return the window showing BUFFER.  Pass ACTION as action argument
 to `display-buffer'."
@@ -139,7 +139,7 @@ temp-buffer-window-show
 	(set-window-hscroll window 0)
 	(with-selected-window window
 	  (run-hooks 'temp-buffer-window-show-hook)
-	  (when temp-buffer-resize-mode
+	  (when (and (not no-resize) temp-buffer-resize-mode)
 	    (resize-temp-buffer-window window)))
 	;; Return the window.
 	window))))
@@ -8300,14 +8305,6 @@ display-buffer-in-direction
 	 (t
 	  (setq direction 'below)))
 
-	(setq alist
-	      (append alist
-		      `(,(if temp-buffer-resize-mode
-		             '(window-height . resize-temp-buffer-window)
-	                   '(window-height . fit-window-to-buffer))
-	                ,(when temp-buffer-resize-mode
-	                   '(preserve-size . (nil . t))))))
-
 	(setq windows (windows-sharing-edge window direction within))
 	(dolist (other windows)
 	  (cond
@@ -8384,15 +8381,10 @@ display-buffer-below-selected
 	     (window--display-buffer buffer window 'reuse alist)))))
 
 (defun display-buffer--maybe-at-bottom (buffer alist)
-  (let ((alist (append alist `(,(if temp-buffer-resize-mode
-		                    '(window-height . resize-temp-buffer-window)
-	                          '(window-height . fit-window-to-buffer))
-	                       ,(when temp-buffer-resize-mode
-	                          '(preserve-size . (nil . t)))))))
-    (or (display-buffer--maybe-same-window buffer alist)
+  (or (display-buffer--maybe-same-window buffer alist)
         (display-buffer-reuse-window buffer alist)
         (display-buffer--maybe-pop-up-frame buffer alist)
-        (display-buffer-at-bottom buffer alist))))
+        (display-buffer-at-bottom buffer alist)))
 
 ;; This should be rewritten as
 ;; (display-buffer-in-direction buffer (cons '(direction . bottom) alist))
diff --git a/lisp/vc/ediff-wind.el b/lisp/vc/ediff-wind.el
index eb903f093f9..c6ce1b78e52 100644
--- a/lisp/vc/ediff-wind.el
+++ b/lisp/vc/ediff-wind.el
@@ -433,7 +433,8 @@ ediff-setup-windows-plain-compare
 
     (select-window (display-buffer-in-direction
                     control-buffer
-                    '((direction . bottom))))
+                    '((direction . bottom)
+                      (window-height . fit-window-to-buffer))))
     (ediff-setup-control-buffer control-buffer)
     ))
 

  parent reply	other threads:[~2023-05-17 16:56 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-12  1:06 bug#63455: 30.0.50; display-buffer-in-direction is always resizing Michael Heerdegen
2023-05-12  7:39 ` martin rudalics
2023-05-12 17:16   ` Juri Linkov
2023-05-13  8:56     ` martin rudalics
2023-05-15 17:01       ` Juri Linkov
2023-05-15 18:21         ` Eli Zaretskii
2023-05-16  7:19         ` martin rudalics
2023-05-16 16:35           ` Juri Linkov
2023-05-17 16:56   ` Juri Linkov [this message]
2023-05-18  8:29     ` martin rudalics
2023-05-18 15:54       ` Juri Linkov
2023-05-19  7:31         ` martin rudalics
2023-05-19 17:54       ` Juri Linkov
2023-05-20  8:27         ` martin rudalics
2023-05-22 18:03           ` Juri Linkov
2023-05-23  2:30             ` Michael Heerdegen
2023-05-23 18:25               ` Juri Linkov
2023-05-24  2:48                 ` Michael Heerdegen
2023-05-12 17:11 ` Juri Linkov
2023-05-13  5:29   ` Michael Heerdegen
2023-05-15 17:02     ` Juri Linkov

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=86jzx6lvxz.fsf@mail.linkov.net \
    --to=juri@linkov.net \
    --cc=63455@debbugs.gnu.org \
    --cc=dgutov@yandex.ru \
    --cc=michael_heerdegen@web.de \
    --cc=rudalics@gmx.at \
    /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).