From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#32825: 27.0.50; Deterministic window management Date: Fri, 02 Nov 2018 09:43:36 +0100 Message-ID: <5BDC0E38.5020901@gmx.at> References: <874leeaiah.fsf@mail.linkov.net> <5BA9E3B1.9010700@gmx.at> <87bm8lzrfb.fsf@web.de> <5BAA76CF.8010808@gmx.at> <878t3nublx.fsf@mail.linkov.net> <87wor7uqgb.fsf@web.de> <87o9bhkeih.fsf@mail.linkov.net> <87h8h9hk4w.fsf@web.de> <87d0rvb7xg.fsf@mail.linkov.net> <87sh0rkucr.fsf@web.de> <87d0rvqf5r.fsf@mail.linkov.net> <87k1m3krvm.fsf@web.de> <87o9bf13b4.fsf@mail.linkov.net> <87d0rvkq01.fsf@web.de> <5BD57C2B.7020109@gmx.at> <87tvl3rvks.fsf@mail.linkov.net> <5BD96392.3040008@gmx.at> <87y3adakkh.fsf@mail.linkov.net> <5BDAC0ED.9030405@gmx.at> <87h8h0juwn.fsf@mail.linkov.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: blaine.gmane.org 1541148126 1815 195.159.176.226 (2 Nov 2018 08:42:06 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 2 Nov 2018 08:42:06 +0000 (UTC) Cc: Michael Heerdegen , 32825@debbugs.gnu.org To: Juri Linkov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Nov 02 09:42:02 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gIV1m-0000N4-1I for geb-bug-gnu-emacs@m.gmane.org; Fri, 02 Nov 2018 09:42:02 +0100 Original-Received: from localhost ([::1]:50255 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIV3s-0002dA-G4 for geb-bug-gnu-emacs@m.gmane.org; Fri, 02 Nov 2018 04:44:12 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48652) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIV3m-0002cs-20 for bug-gnu-emacs@gnu.org; Fri, 02 Nov 2018 04:44:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gIV3i-0007o0-Rp for bug-gnu-emacs@gnu.org; Fri, 02 Nov 2018 04:44:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:54974) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gIV3i-0007nT-LB for bug-gnu-emacs@gnu.org; Fri, 02 Nov 2018 04:44:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gIV3i-0006OC-AM for bug-gnu-emacs@gnu.org; Fri, 02 Nov 2018 04:44:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Nov 2018 08:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32825 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 32825-submit@debbugs.gnu.org id=B32825.154114823824543 (code B ref 32825); Fri, 02 Nov 2018 08:44:02 +0000 Original-Received: (at 32825) by debbugs.gnu.org; 2 Nov 2018 08:43:58 +0000 Original-Received: from localhost ([127.0.0.1]:59232 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gIV3e-0006Nl-A0 for submit@debbugs.gnu.org; Fri, 02 Nov 2018 04:43:58 -0400 Original-Received: from mout.gmx.net ([212.227.15.18]:33533) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gIV3c-0006NW-BQ for 32825@debbugs.gnu.org; Fri, 02 Nov 2018 04:43:56 -0400 Original-Received: from [192.168.1.101] ([213.162.73.248]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MIMQR-1gG0kf0kgh-0049ii; Fri, 02 Nov 2018 09:43:46 +0100 Original-Received: from [192.168.1.101] ([213.162.73.248]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0MIMQR-1gG0kf0kgh-0049ii; Fri, 02 Nov 2018 09:43:46 +0100 In-Reply-To: <87h8h0juwn.fsf@mail.linkov.net> X-Provags-ID: V03:K1:tRDu7KAEvmQhw1CzzD1xb8cPFtQ2/JxrZhAbWcX97vK/Sj7s/Pv IfUC2Q8BoyyglNjE6ezTPqK9y6lGvRCnowML5uMZXAKOhiUUmo/rUFoz95NekGxroTAyVyo Uq0v1JLSC9yIBgWQLycYjM00EDO5vlrBmu9sJ2T8w4/KEYFe/Z4swlduZqEoRyBj/aOZp9l OorOwYehzMaOO3db1DF5Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:iUGQJkIlvzM=:Mm+jKimyfmuKKjIEZWODLI 9Y2nyo16RRgKCGoFvHoJ1fKZeZkaNGWsIPSZT+QuHhY2cpPkKPzXf47utfWWkog8UMssDg3i9 B9B3H00PS9eFl05ArQXnhP1RK96gk5iClNjp9iv0TcVSceGw0HW4Rq7H48EVVyRb3ER6trl2j 85Gifg3+jNVW6GIljN0nBaW3xfHmsAAOsZ35nB+fA1XAIMdI5YM4quhojO9K3fWF3bAiH2hcP CsjdKEUE9r8KmiB3ZoneADPVOpVkRKMKI8WptHoZx0c5Qnn7EcOTvKj1PntD5zK1+d8C3IZNc 04eZzF19PzTKfLvZy57EJaQLekw1q3nUImQjkY6PRtTyv2C18djNJsrep0mwUa50tcx+cTsP2 FDyOUjeXtXi5N0OjmLqoLLu8+iicFKjsH5kLnyJ7TAS/QfH34mT5JDHhbqC6rcExZCiX0/nQL XQf0NtK/Ru0eF231/8D+gNXtONpY6buKR6NYV0i79dHHTw8tf0F+uQQhntme2XDbNxPv6LrFx mKiQc9wcn+VYCER/8J/4/4T7j/GfospXlBADLNz7hTwCcJoG3fLKYCQnD5WWTx1wxXNgqm24E qVxr8d3OMv6STdiJERlov2Ak/CauDxKk817169vIdrZi7GhDp/8l6sb5nyqsIJ+48Norv1qNr uwvk5lF5sfKK2MWueHnytE2l/cE/8KI/arokhpGvT0TczwrLHJbw9hro76mEesV95VmYGkQzw r5/d8g0kb3ldDXjAUeGQBDgcbRBn0Ze7ttkHGMPaAEtA7X519SaZsTvfTBnEZSBWhjvK5fRQ X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 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.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:151942 Archived-At: >> 'window-min-height' is an option which causes functions to >> check the height of all windows wrt a potential change. If, after the >> change, the height of one window would drop below that value, the >> change is not made. One can make an exeption for a specific window, >> for example the one that should be resized or newly made, but not for >> other windows that are probably not related to the change. > > I meant the same, but with one change: check the height of all windows > with the default value of 'window-min-height' (i.e. 4), but check the > height of the new created window with the value 'window-min-height' > (e.g. 10) specified in an alist that should override the default value > only for the window created by display-buffer-below-selected. So you mean that if Emacs can't fulfill a 'window-height' contract for a new window below the selected one, it shouldn't make a new one in the first place? Then with an an alist entry called 'min-height' we could rewrite 'display-buffer-below-selected' as follows: (defun display-buffer-below-selected (buffer alist) "Try displaying BUFFER in a window below the selected window. If there is a window below the selected one and that window already displays BUFFER, use that window. Otherwise, try to create a new window below the selected one and show BUFFER there. If that attempt fails as well and there is a non-dedicated window below the selected one, use that window." (let ((min-height (cdr (assq 'min-height alist))) window) (or (and (setq window (window-in-direction 'below)) (eq buffer (window-buffer window)) (window--display-buffer buffer window 'reuse alist)) (and (not (frame-parameter nil 'unsplittable)) (or (not (numberp min-height)) (window-sizable-p nil (- min-height))) (let ((split-height-threshold 0) split-width-threshold) (setq window (window--try-to-split-window (selected-window) alist))) (window--display-buffer buffer window 'window alist display-buffer-mark-dedicated)) (and (setq window (window-in-direction 'below)) (not (window-dedicated-p window)) (window--display-buffer buffer window 'reuse alist display-buffer-mark-dedicated))))) But would we (re-)use a window if it is not as large as 'min-height'? Would we try to enlarge such a window? As far as we can? BTW: Calling 'window--try-to-split-window' above is butt-ugly. We should simply call 'split-window' instead. I have no idea what came to my mind when I wrote that. martin