aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/window.el
diff options
context:
space:
mode:
authorJuri Linkov2020-02-10 02:49:36 +0200
committerJuri Linkov2020-02-10 02:49:36 +0200
commitac9acc1864b02b92de4eb2e98db7b5b0cd03e019 (patch)
tree16c26e1bb91bf14ec8ed6e292a0ba961e5414ba2 /lisp/window.el
parent5e7bead8eac9a79dfd74452a7bd5199f12ad0c45 (diff)
downloademacs-ac9acc1864b02b92de4eb2e98db7b5b0cd03e019.tar.gz
emacs-ac9acc1864b02b92de4eb2e98db7b5b0cd03e019.zip
Use quit-restore-window to close tab (bug#39446)
* lisp/tab-bar.el (display-buffer-in-new-tab): New function with code from display-buffer-in-tab. (display-buffer-in-tab): Call display-buffer-in-new-tab. (switch-to-buffer-other-tab): Instead of 'display-buffer-same-window' use '(reusable-frames . t)'. * lisp/windmove.el (windmove-display-in-direction): Set arg 'type' to 'tab' for window--display-buffer when creating a new tab. * lisp/window.el (quit-restore-window): Call tab-bar-close-tab when quit-restore type is 'tab'. (display-buffer-record-window): Set window-parameter 'quit-restore' to 'tab' for type 'tab'. (window--display-buffer): Set window-prev-buffers to nil for tab too.
Diffstat (limited to 'lisp/window.el')
-rw-r--r--lisp/window.el16
1 files changed, 14 insertions, 2 deletions
diff --git a/lisp/window.el b/lisp/window.el
index 40c4bf5ad47..bd825c09e16 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -5009,6 +5009,13 @@ nil means to not handle the buffer in a particular way. This
5009 quad entry) 5009 quad entry)
5010 (cond 5010 (cond
5011 ((and (not prev-buffer) 5011 ((and (not prev-buffer)
5012 (eq (nth 1 quit-restore) 'tab)
5013 (eq (nth 3 quit-restore) buffer))
5014 (tab-bar-close-tab)
5015 ;; If the previously selected window is still alive, select it.
5016 (when (window-live-p (nth 2 quit-restore))
5017 (select-window (nth 2 quit-restore))))
5018 ((and (not prev-buffer)
5012 (or (eq (nth 1 quit-restore) 'frame) 5019 (or (eq (nth 1 quit-restore) 'frame)
5013 (and (eq (nth 1 quit-restore) 'window) 5020 (and (eq (nth 1 quit-restore) 'window)
5014 ;; If the window has been created on an existing 5021 ;; If the window has been created on an existing
@@ -6367,7 +6374,12 @@ fourth element is BUFFER."
6367 ;; WINDOW has been created on a new frame. 6374 ;; WINDOW has been created on a new frame.
6368 (set-window-parameter 6375 (set-window-parameter
6369 window 'quit-restore 6376 window 'quit-restore
6370 (list 'frame 'frame (selected-window) buffer))))) 6377 (list 'frame 'frame (selected-window) buffer)))
6378 ((eq type 'tab)
6379 ;; WINDOW has been created on a new tab.
6380 (set-window-parameter
6381 window 'quit-restore
6382 (list 'tab 'tab (selected-window) buffer)))))
6371 6383
6372(defcustom display-buffer-function nil 6384(defcustom display-buffer-function nil
6373 "If non-nil, function to call to handle `display-buffer'. 6385 "If non-nil, function to call to handle `display-buffer'.
@@ -7034,7 +7046,7 @@ Return WINDOW if BUFFER and WINDOW are live."
7034 ;; use that. 7046 ;; use that.
7035 (display-buffer-mark-dedicated 7047 (display-buffer-mark-dedicated
7036 (set-window-dedicated-p window display-buffer-mark-dedicated)))) 7048 (set-window-dedicated-p window display-buffer-mark-dedicated))))
7037 (when (memq type '(window frame)) 7049 (when (memq type '(window frame tab))
7038 (set-window-prev-buffers window nil)) 7050 (set-window-prev-buffers window nil))
7039 (let ((quit-restore (window-parameter window 'quit-restore)) 7051 (let ((quit-restore (window-parameter window 'quit-restore))
7040 (height (cdr (assq 'window-height alist))) 7052 (height (cdr (assq 'window-height alist)))