emacs-devel
[Top][All Lists]
Advanced

[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)
```



reply via email to

[Prev in Thread] Current Thread [Next in Thread]