unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: martin rudalics <rudalics@gmx.at>
To: Liu Hui <liuhui1610@gmail.com>, 25169@debbugs.gnu.org
Subject: bug#25169: 26.0.50; display-buffer doesn't set window width correctly
Date: Sun, 11 Dec 2016 17:19:47 +0100	[thread overview]
Message-ID: <584D7CA3.5000409@gmx.at> (raw)
In-Reply-To: <620bfbe6-9805-e1ea-a426-0ec0058fe5e8@gmail.com>

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

Thanks for the report.

 > Recipe 1:
 >
 > 1. Emacs -Q
 > 2. evaluate the following code in *scratch*:
 >
 >     (display-buffer (get-buffer-create "aaa")
 >                    '(display-buffer-pop-up-window
 >                      (window-width . 20)))
 >     ;; => correct window width for buffer "aaa"
 >
 >     (display-buffer (get-buffer-create "bbb")
 >                    '(display-buffer-pop-up-window
 >                      (window-width . 20)))
 >     ;; => changed and larger window width for buffer "bbb"

Recipe 1 is difficult to reproduce here.  I made my initial frame 169
columns wide to get a side-by-side split when displaying aaa and to
_not_ get another side-by-side split when displaying bbb.  What happens
is that ‘display-buffer-pop-up-window’ refuses to make a new window for
bbb (you can reduce the value of ‘split-width-threshold’ to get a split)
so ‘display-buffer’ rather uses aaa's window to display bbb via
‘display-buffer-use-some-window’.  The latter ignores the ‘window-width’
entry but applies ‘window--even-window-sizes’ instead.

So this is not a bug but admittedly a very confusing sequence of events.

 > Recipe 2:
 >
 > 1. Emacs -Q
 > 2. evaluate the following code in *scratch*:
 >
 >     (display-buffer (get-buffer-create "aaa")
 >            '(display-buffer-in-side-window
 >              (window-width . 20)
 >              (side . right)))
 >     ;; => correct window width for buffer "aaa"
 >
 >     (display-buffer (get-buffer-create "bbb")
 >            '(display-buffer-in-side-window
 >              (window-width . 20)
 >              (side . left)))
 >     ;; => correct width for buffer "bbb", but the window width of
 >     ;; buffer "aaa" is changed and becomes larger

This is a bug and I attached a fix for it.  Please try it.

Note, however, that in general you can rely on Emacs to preserve the
size of a window like that of aaa in recipe 2 if and only if you run
‘window-preserve-size’ on that window - either explicitly or via a
`preserve-size' argument.

martin

(BTW: Does the ibuffer scenario from bug#25115 work orderly now?)

[-- Attachment #2: window.el.diff --]
[-- Type: text/plain, Size: 898 bytes --]

--- a/lisp/window.el
+++ b/lisp/window.el
@@ -2797,7 +2797,7 @@ window-resize
 		window delta horizontal ignore nil nil nil t)))
       (window--resize-reset frame horizontal)
       (window--resize-this-window window delta horizontal ignore t)
-      (if (and (not window-combination-resize)
+      (if (and (not (eq window-combination-resize t))
 	       (window-combined-p window horizontal)
 	       (setq sibling (or (window-right window) (window-left window)))
 	       (window-sizable-p
@@ -4049,7 +4049,7 @@ delete-window
 	     (sibling (or (window-left window) (window-right window))))
 	(window--resize-reset frame horizontal)
 	(cond
-	 ((and (not window-combination-resize)
+	 ((and (not (eq window-combination-resize t))
 	       sibling (window-sizable-p sibling size horizontal nil t))
 	  ;; Resize WINDOW's sibling.
 	  (window--resize-this-window sibling size horizontal nil t)


  reply	other threads:[~2016-12-11 16:19 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-11 12:18 bug#25169: 26.0.50; display-buffer doesn't set window width correctly Liu Hui
2016-12-11 16:19 ` martin rudalics [this message]
2016-12-12  4:53   ` Liu Hui
2016-12-12 10:00     ` martin rudalics

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=584D7CA3.5000409@gmx.at \
    --to=rudalics@gmx.at \
    --cc=25169@debbugs.gnu.org \
    --cc=liuhui1610@gmail.com \
    /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).