]> git.eshelyaron.com Git - emacs.git/commitdiff
Add a new display-buffer-full-frame display action
authorLars Ingebrigtsen <larsi@gnus.org>
Wed, 18 May 2022 13:33:11 +0000 (15:33 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 18 May 2022 13:33:57 +0000 (15:33 +0200)
* doc/lispref/windows.texi (Buffer Display Action Functions):
Document it.

* lisp/window.el (display-buffer-full-frame): New display action
(bug#34169).
(display-buffer--action-function-custom-type): Add.
(display-buffer): Mention it.

doc/lispref/windows.texi
etc/NEWS
lisp/window.el

index 4ff71a3575d8b2288c2da0a1b4e47f32a3e6ed82..0bb873f3a9f087afb9a3b62bbf7a6324d7531df7 100644 (file)
@@ -2845,6 +2845,11 @@ the function specified in @code{pop-up-frame-function}
 the newly created frame's parameters.
 @end defun
 
+@defun display-buffer-full-frame buffer alist
+This function displays the buffer on the current frame, deleting all
+other windows so that it takes up the full frame.
+@end defun
+
 @defun display-buffer-in-child-frame buffer alist
 This function tries to display @var{buffer} in a child frame
 (@pxref{Child Frames}) of the selected frame, either reusing an
index 7089e3a2717858bca93d2d1ff0522278f6184f2b..8aa53e62e0bb948b538fd0472aa3a31e5cf20795 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -605,6 +605,11 @@ specifiers can now use ':type webp'.
 
 ** Windows
 
++++
+*** New display action 'display-buffer-full-frame'.
+This action removes other windows on the frame when displaying a
+buffer.
+
 +++
 *** 'display-buffer' now can set up the body size of the chosen window.
 For example, a 'display-buffer-alist' entry of
index 8b8940197ee44fca9a602e95dc0c65e9f2410c83..4ad2defdf9cbdf013f2ae818dad832b28d747bf5 100644 (file)
@@ -7435,6 +7435,7 @@ The actual non-nil value of this variable will be copied to the
           (const display-buffer-pop-up-window)
           (const display-buffer-same-window)
           (const display-buffer-pop-up-frame)
+          (const display-buffer-full-frame)
           (const display-buffer-in-child-frame)
           (const display-buffer-below-selected)
           (const display-buffer-at-bottom)
@@ -7581,6 +7582,7 @@ to an expression containing one of these \"action\" functions:
  `display-buffer-use-least-recent-window' -- Try to avoid re-using
     windows that have recently been switched to.
  `display-buffer-pop-up-window' -- Pop up a new window.
+ `display-buffer-full-frame' -- Delete other windows and use the full frame.
  `display-buffer-below-selected' -- Use or pop up a window below
     the selected one.
  `display-buffer-at-bottom' -- Use or pop up a window at the
@@ -7814,6 +7816,23 @@ indirectly called by the latter."
              (window-dedicated-p))
     (window--display-buffer buffer (selected-window) 'reuse alist)))
 
+(defun display-buffer-full-frame (buffer alist)
+  "Display BUFFER in the current frame, taking the entire frame.
+ALIST is an association list of action symbols and values.  See
+Info node `(elisp) Buffer Display Action Alists' for details of
+such alists.
+
+This is an action function for buffer display, see Info
+node `(elisp) Buffer Display Action Functions'.  It should be
+called only by `display-buffer' or a function directly or
+indirectly called by the latter."
+  (when-let ((window (or (display-buffer-reuse-window buffer alist)
+                         (display-buffer-same-window buffer alist)
+                         (display-buffer-pop-up-window buffer alist)
+                         (display-buffer-use-some-window buffer alist))))
+    (delete-other-windows window)
+    window))
+
 (defun display-buffer--maybe-same-window (buffer alist)
   "Conditionally display BUFFER in the selected window.
 ALIST is an association list of action symbols and values.  See