[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: tab-bar: Making a new tab without no-delete-other-windows windows
From: |
Juri Linkov |
Subject: |
Re: tab-bar: Making a new tab without no-delete-other-windows windows |
Date: |
Fri, 24 Sep 2021 09:50:07 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu) |
> I've been experimenting with tab-bar, and I noticed that, when I make a
> new tab, e.g. with "C-x t 2", any windows that have the
> no-delete-other-windows parameter set are displayed in the new tab.
>
> I guess sometimes that might be what's desired, e.g. when using a side
> window that the user wants to be displayed regardless of window
> configuration. But in my case, I have some side windows in a tab that
> are only relevant to that tab's purpose, and when I make a new tab, I
> don't want those side windows to be included in it. As it is, I have to
> "C-x 0" on each unwanted window after making the new tab, which is
> awkward.
>
> So I added this to my config, which seems to solve it for me:
>
> (use-package tab-bar
> :config
> (defun ap/really-delete-other-windows (&rest _ignore)
> (let ((ignore-window-parameters t))
> (delete-other-windows)))
> (cl-pushnew #'ap/really-delete-other-windows
> tab-bar-tab-post-open-functions))
>
> I wonder, would it be worth including something like this by default, or
> as a "batteries-included" choice in the customization option?
If this works for you, then maybe we need to include the same fix by default?
```
diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el
index 69eb3a3608..55a19db8bb 100644
--- a/lisp/tab-bar.el
+++ b/lisp/tab-bar.el
@@ -1245,7 +1245,8 @@ tab-bar-new-tab-to
;; Handle the case when it's called in the active minibuffer.
(when (minibuffer-selected-window)
(select-window (minibuffer-selected-window)))
- (delete-other-windows)
+ (let ((ignore-window-parameters t))
+ (delete-other-windows))
;; Create a new window to get rid of old window parameters
;; (e.g. prev/next buffers) of old window.
(split-window) (delete-window)
```