From: Juri Linkov Date: Sun, 6 Oct 2019 21:53:34 +0000 (+0300) Subject: Implement tab-close-other bound to C-x 6 1 by analogy with C-x 5 1. X-Git-Tag: emacs-27.0.90~1248 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=01465915c93d11fe26c189386d7103cf4904bf6a;p=emacs.git Implement tab-close-other bound to C-x 6 1 by analogy with C-x 5 1. * lisp/tab-bar.el (tab-close-other): New command bound to C-x 6 1. * doc/emacs/frames.texi (Tab Bars): Document it. --- diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index 869b77d86bd..169eebab3e6 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -1307,6 +1307,11 @@ Switch to another tab. If you repeat this command, it cycles through all the tabs on the selected frame. With a positive numeric argument N, it switches to the next Nth tab; with a negative argument −N, it switches back to the previous Nth tab. + +@item C-x 6 1 +@kindex C-x 6 1 +@findex tab-close-other +Close all tabs on the selected frame, except the selected one. @end table @node Dialog Boxes diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el index 27ae274eaa4..1c1acaafa47 100644 --- a/lisp/tab-bar.el +++ b/lisp/tab-bar.el @@ -560,6 +560,17 @@ TO-INDEX counts from 1." (tab-bar-tabs))))) (tab-bar-close-tab (1+ (tab-bar--tab-index-by-name name)))) +(defun tab-close-other () + "Close all tabs on the selected frame, except the selected one." + (interactive) + (let* ((tabs (tab-bar-tabs)) + (current-index (tab-bar--current-tab-index tabs))) + (when current-index + (set-frame-parameter nil 'tabs (list (nth current-index tabs))) + (if tab-bar-mode + (force-mode-line-update) + (message "Deleted all other tabs"))))) + ;;; Short aliases @@ -819,6 +830,7 @@ Like \\[find-file-other-frame] (which see), but creates a new tab." (switch-to-buffer-other-tab value)))) (define-key ctl-x-6-map "2" 'tab-new) +(define-key ctl-x-6-map "1" 'tab-close-other) (define-key ctl-x-6-map "0" 'tab-close) (define-key ctl-x-6-map "o" 'tab-next) (define-key ctl-x-6-map "b" 'switch-to-buffer-other-tab)