From debbugs-submit-bounces@debbugs.gnu.org Wed Jan 31 16:57:16 2018 Received: (at submit) by debbugs.gnu.org; 31 Jan 2018 21:57:16 +0000 Received: from localhost ([127.0.0.1]:51564 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eh0NY-0007AC-AS for submit@debbugs.gnu.org; Wed, 31 Jan 2018 16:57:16 -0500 Received: from eggs.gnu.org ([208.118.235.92]:36062) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eh0NX-00079x-62 for submit@debbugs.gnu.org; Wed, 31 Jan 2018 16:57:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eh0NR-0006NN-9z for submit@debbugs.gnu.org; Wed, 31 Jan 2018 16:57:09 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:41167) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eh0NR-0006NJ-6m for submit@debbugs.gnu.org; Wed, 31 Jan 2018 16:57:09 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55266) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eh0NQ-0007Fk-5w for bug-gnu-emacs@gnu.org; Wed, 31 Jan 2018 16:57:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eh0NP-0006N1-Db for bug-gnu-emacs@gnu.org; Wed, 31 Jan 2018 16:57:08 -0500 Received: from sub3.mail.dreamhost.com ([69.163.253.7]:38418 helo=homiemail-a20.g.dreamhost.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eh0NP-0006Mn-6u for bug-gnu-emacs@gnu.org; Wed, 31 Jan 2018 16:57:07 -0500 Received: from homiemail-a20.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a20.g.dreamhost.com (Postfix) with ESMTP id 21D757EC06F for ; Wed, 31 Jan 2018 13:57:06 -0800 (PST) Received: from localhost.linkov.net (m91-129-107-8.cust.tele2.ee [91.129.107.8]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by homiemail-a20.g.dreamhost.com (Postfix) with ESMTPSA id 7ADD87EC063 for ; Wed, 31 Jan 2018 13:57:05 -0800 (PST) From: Juri Linkov To: bug-gnu-emacs@gnu.org Subject: Define aliases for window display actions Organization: LINKOV.NET Date: Wed, 31 Jan 2018 23:52:55 +0200 Message-ID: <87mv0tsnk8.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) Severity: wishlist Instead of duplicating the same list of actions in many places like in bug#30016: (pop-to-buffer buf `((display-buffer--maybe-same-window display-buffer-reuse-window display-buffer--maybe-pop-up-frame-or-window display-buffer-at-bottom) ,(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))))) I propose to introduce the concept of display action aliases to group several actions under one name and use just this short name where needed. From debbugs-submit-bounces@debbugs.gnu.org Sun Feb 04 17:31:54 2018 Received: (at 30314) by debbugs.gnu.org; 4 Feb 2018 22:31:54 +0000 Received: from localhost ([127.0.0.1]:57444 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eiSpG-0003ou-9d for submit@debbugs.gnu.org; Sun, 04 Feb 2018 17:31:54 -0500 Received: from sub3.mail.dreamhost.com ([69.163.253.7]:60781 helo=homiemail-a20.g.dreamhost.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eiSpE-0003ol-7J for 30314@debbugs.gnu.org; Sun, 04 Feb 2018 17:31:52 -0500 Received: from homiemail-a20.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a20.g.dreamhost.com (Postfix) with ESMTP id 7C7D37EC064 for <30314@debbugs.gnu.org>; Sun, 4 Feb 2018 14:31:51 -0800 (PST) Received: from localhost.linkov.net (m91-129-107-8.cust.tele2.ee [91.129.107.8]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by homiemail-a20.g.dreamhost.com (Postfix) with ESMTPSA id 99D757EC060 for <30314@debbugs.gnu.org>; Sun, 4 Feb 2018 14:31:50 -0800 (PST) From: Juri Linkov To: 30314@debbugs.gnu.org Subject: Re: bug#30314: Define aliases for window display actions Organization: LINKOV.NET References: <87mv0tsnk8.fsf@mail.linkov.net> Date: Mon, 05 Feb 2018 00:30:29 +0200 In-Reply-To: <87mv0tsnk8.fsf@mail.linkov.net> (Juri Linkov's message of "Wed, 31 Jan 2018 23:52:55 +0200") Message-ID: <871si0qtfe.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 30314 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) > Instead of duplicating the same list of actions in many places > like in bug#30016: > > (pop-to-buffer buf `((display-buffer--maybe-same-window > display-buffer-reuse-window > display-buffer--maybe-pop-up-frame-or-window > display-buffer-at-bottom) > ,(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))))) > > I propose to introduce the concept of display action aliases to group > several actions under one name and use just this short name where needed. I realized that aliases can be implemented simply by defining a new composite action function: diff --git a/lisp/files.el b/lisp/files.el index 414eb3f..22d8247 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3315,15 +3315,7 @@ hack-local-variables-confirm ;; Display the buffer and read a choice. (save-window-excursion - (pop-to-buffer buf `((display-buffer--maybe-same-window - display-buffer-reuse-window - display-buffer--maybe-pop-up-frame-or-window - display-buffer-at-bottom) - ,(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))))) + (pop-to-buffer buf '(display-buffer-composite-at-bottom)) (let* ((exit-chars '(?y ?n ?\s ?\C-g ?\C-v)) (prompt (format "Please type %s%s: " (if offer-save "y, n, or !" "y or n") @@ -6929,15 +6921,7 @@ save-buffers-kill-emacs (or (not active) (with-displayed-buffer-window (get-buffer-create "*Process List*") - `((display-buffer--maybe-same-window - display-buffer-reuse-window - display-buffer--maybe-pop-up-frame-or-window - display-buffer-at-bottom) - ,(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)))) + '(display-buffer-composite-at-bottom) #'(lambda (window _value) (with-selected-window window (unwind-protect diff --git a/lisp/window.el b/lisp/window.el index abd1a68..d9a0bc8 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -7360,6 +7360,20 @@ display-buffer-below-selected (window--display-buffer buffer window 'reuse alist display-buffer-mark-dedicated))))) +(defun display-buffer-composite-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) + (display-buffer-reuse-window buffer alist) + (and (if (eq pop-up-frames 'graphic-only) + (display-graphic-p) + pop-up-frames) + (display-buffer-pop-up-frame buffer alist)) + (display-buffer-at-bottom buffer alist)))) + (defun display-buffer-at-bottom (buffer alist) "Try displaying BUFFER in a window at the bottom of the selected frame. This either reuses such a window provided it shows BUFFER From debbugs-submit-bounces@debbugs.gnu.org Tue Feb 06 16:43:58 2018 Received: (at 30314) by debbugs.gnu.org; 6 Feb 2018 21:43:58 +0000 Received: from localhost ([127.0.0.1]:60645 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ejB1y-00058n-AY for submit@debbugs.gnu.org; Tue, 06 Feb 2018 16:43:58 -0500 Received: from sub3.mail.dreamhost.com ([69.163.253.7]:44572 helo=homiemail-a20.g.dreamhost.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ejB1v-00058e-WD for 30314@debbugs.gnu.org; Tue, 06 Feb 2018 16:43:56 -0500 Received: from homiemail-a20.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a20.g.dreamhost.com (Postfix) with ESMTP id 42F507EC064 for <30314@debbugs.gnu.org>; Tue, 6 Feb 2018 13:43:55 -0800 (PST) Received: from localhost.linkov.net (m91-129-107-8.cust.tele2.ee [91.129.107.8]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by homiemail-a20.g.dreamhost.com (Postfix) with ESMTPSA id 635897EC061 for <30314@debbugs.gnu.org>; Tue, 6 Feb 2018 13:43:54 -0800 (PST) From: Juri Linkov To: 30314@debbugs.gnu.org Subject: Re: bug#30314: Define aliases for window display actions Organization: LINKOV.NET References: <87mv0tsnk8.fsf@mail.linkov.net> <871si0qtfe.fsf@mail.linkov.net> Date: Tue, 06 Feb 2018 23:42:10 +0200 In-Reply-To: <871si0qtfe.fsf@mail.linkov.net> (Juri Linkov's message of "Mon, 05 Feb 2018 00:30:29 +0200") Message-ID: <87lgg5x0b1.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 30314 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) --=-=-= Content-Type: text/plain > + (and (if (eq pop-up-frames 'graphic-only) > + (display-graphic-p) > + pop-up-frames) > + (display-buffer-pop-up-frame buffer alist)) Nah, this can't be right. Better to create new functions for this: --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=display-buffer--maybe.patch diff --git a/lisp/files.el b/lisp/files.el index 414eb3f..4b67b02 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3315,15 +3315,7 @@ hack-local-variables-confirm ;; Display the buffer and read a choice. (save-window-excursion - (pop-to-buffer buf `((display-buffer--maybe-same-window - display-buffer-reuse-window - display-buffer--maybe-pop-up-frame-or-window - display-buffer-at-bottom) - ,(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))))) + (pop-to-buffer buf '(display-buffer--maybe-at-bottom)) (let* ((exit-chars '(?y ?n ?\s ?\C-g ?\C-v)) (prompt (format "Please type %s%s: " (if offer-save "y, n, or !" "y or n") @@ -6929,15 +6921,7 @@ save-buffers-kill-emacs (or (not active) (with-displayed-buffer-window (get-buffer-create "*Process List*") - `((display-buffer--maybe-same-window - display-buffer-reuse-window - display-buffer--maybe-pop-up-frame-or-window - display-buffer-at-bottom) - ,(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)))) + '(display-buffer--maybe-at-bottom) #'(lambda (window _value) (with-selected-window window (unwind-protect diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 4d14b26..5d91242 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1823,12 +1823,7 @@ minibuffer-completion-help ;; window, mark it as softly-dedicated, so bury-buffer in ;; minibuffer-hide-completions will know whether to ;; delete the window or not. - (display-buffer-mark-dedicated 'soft) - ;; Disable `pop-up-windows' temporarily to allow - ;; `display-buffer--maybe-pop-up-frame-or-window' - ;; in the display actions below to pop up a frame - ;; if `pop-up-frames' is non-nil, but not to pop up a window. - (pop-up-windows nil)) + (display-buffer-mark-dedicated 'soft)) (with-displayed-buffer-window "*Completions*" ;; This is a copy of `display-buffer-fallback-action' @@ -1836,7 +1831,7 @@ minibuffer-completion-help ;; with `display-buffer-at-bottom'. `((display-buffer--maybe-same-window display-buffer-reuse-window - display-buffer--maybe-pop-up-frame-or-window + display-buffer--maybe-pop-up-frame ;; Use `display-buffer-below-selected' for inline completions, ;; but not in the minibuffer (e.g. in `eval-expression') ;; for which `display-buffer-at-bottom' is used. diff --git a/lisp/window.el b/lisp/window.el index abd1a68..8c5e441 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -7289,12 +7289,23 @@ display-buffer--maybe-pop-up-frame-or-window If that cannot be done, and `pop-up-windows' is non-nil, try again with `display-buffer-pop-up-window'." - (or (and (if (eq pop-up-frames 'graphic-only) - (display-graphic-p) - pop-up-frames) - (display-buffer-pop-up-frame buffer alist)) - (and pop-up-windows - (display-buffer-pop-up-window buffer alist)))) + (or (display-buffer--maybe-pop-up-frame buffer alist) + (display-buffer--maybe-pop-up-window buffer alist))) + +(defun display-buffer--maybe-pop-up-frame (buffer alist) + "Try displaying BUFFER based on `pop-up-frames'. +If `pop-up-frames' is non-nil (and not `graphic-only' on a +text-only terminal), try with `display-buffer-pop-up-frame'." + (and (if (eq pop-up-frames 'graphic-only) + (display-graphic-p) + pop-up-frames) + (display-buffer-pop-up-frame buffer alist))) + +(defun display-buffer--maybe-pop-up-window (buffer alist) + "Try displaying BUFFER based on `pop-up-windows'. +If `pop-up-windows' is non-nil, try with `display-buffer-pop-up-window'." + (and pop-up-windows + (display-buffer-pop-up-window buffer alist))) (defun display-buffer-in-child-frame (buffer alist) "Display BUFFER in a child frame. @@ -7360,6 +7371,17 @@ display-buffer-below-selected (window--display-buffer buffer window 'reuse alist display-buffer-mark-dedicated))))) +(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) + (display-buffer-reuse-window buffer alist) + (display-buffer--maybe-pop-up-frame buffer alist) + (display-buffer-at-bottom buffer alist)))) + (defun display-buffer-at-bottom (buffer alist) "Try displaying BUFFER in a window at the bottom of the selected frame. This either reuses such a window provided it shows BUFFER @@ -7376,8 +7398,8 @@ display-buffer-at-bottom (setq bottom-window-shows-buffer t) (setq bottom-window window)) ((not bottom-window) - (setq bottom-window window))) - nil nil 'nomini)) + (setq bottom-window window)))) + nil nil 'nomini) (or (and bottom-window-shows-buffer (window--display-buffer buffer bottom-window 'reuse alist display-buffer-mark-dedicated)) --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Feb 10 16:56:13 2018 Received: (at 30314-done) by debbugs.gnu.org; 10 Feb 2018 21:56:13 +0000 Received: from localhost ([127.0.0.1]:37309 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ekd80-00051C-UQ for submit@debbugs.gnu.org; Sat, 10 Feb 2018 16:56:13 -0500 Received: from sub3.mail.dreamhost.com ([69.163.253.7]:57089 helo=homiemail-a101.g.dreamhost.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ekd7y-000514-N9 for 30314-done@debbugs.gnu.org; Sat, 10 Feb 2018 16:56:10 -0500 Received: from homiemail-a101.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a101.g.dreamhost.com (Postfix) with ESMTP id CB4AE117E078 for <30314-done@debbugs.gnu.org>; Sat, 10 Feb 2018 13:56:09 -0800 (PST) Received: from localhost.linkov.net (m91-129-100-74.cust.tele2.ee [91.129.100.74]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by homiemail-a101.g.dreamhost.com (Postfix) with ESMTPSA id 2687F117E06A for <30314-done@debbugs.gnu.org>; Sat, 10 Feb 2018 13:56:08 -0800 (PST) From: Juri Linkov To: 30314-done@debbugs.gnu.org Subject: Re: bug#30314: Define aliases for window display actions Organization: LINKOV.NET References: <87mv0tsnk8.fsf@mail.linkov.net> <871si0qtfe.fsf@mail.linkov.net> <87lgg5x0b1.fsf@mail.linkov.net> Date: Sat, 10 Feb 2018 23:55:45 +0200 In-Reply-To: <87lgg5x0b1.fsf@mail.linkov.net> (Juri Linkov's message of "Tue, 06 Feb 2018 23:42:10 +0200") Message-ID: <87vaf4pl0e.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 30314-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) > Better to create new functions for this: Pushed to master, and closed. From unknown Sat Jun 21 10:40:00 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sun, 11 Mar 2018 11:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator