]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/tab-bar.el: 'C-x t RET' creates a new tab for non-existent tab name.
authorJuri Linkov <juri@linkov.net>
Mon, 22 Nov 2021 18:15:28 +0000 (20:15 +0200)
committerJuri Linkov <juri@linkov.net>
Mon, 22 Nov 2021 18:15:58 +0000 (20:15 +0200)
* lisp/tab-bar.el (tab-bar-switch-to-tab): Create a new tab and
rename it to NAME when can't find the tab with the given NAME (bug#51935).

etc/NEWS
lisp/tab-bar.el

index 09f17d6553b2fe733a98b9ce68976bdb59162dd9..0bf3d9368b6f3bf95c38a7bffc6ecbde07ecb004 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -181,6 +181,11 @@ For example, a 'display-buffer-alist' entry of
 will make the body of the chosen window 40 columns wide.  For the
 height use 'window-height' in combination with 'body-lines'.
 
+** Tab Bars and Tab Lines
+
+---
+*** 'C-x t RET' creates a new tab when the provided tab name doesn't exist.
+
 ** Better detection of text suspiciously reordered on display.
 The function 'bidi-find-overridden-directionality' has been extended
 to detect reordering effects produced by embeddings and isolates
index d331f29194df56beeeb540c9526afbdedb926d57..656cb878e3e45ff7d961ef5ad1f6979b9c3c68cd 100644 (file)
@@ -1196,7 +1196,9 @@ Interactively, ARG is the prefix numeric argument and defaults to 1."
 Default values are tab names sorted by recency, so you can use \
 \\<minibuffer-local-map>\\[next-history-element]
 to get the name of the most recently visited tab, the second
-most recent, and so on."
+most recent, and so on.
+When the tab with that NAME doesn't exist, create a new tab
+and rename it to NAME."
   (interactive
    (let* ((recent-tabs (mapcar (lambda (tab)
                                  (alist-get 'name tab))
@@ -1204,7 +1206,11 @@ most recent, and so on."
      (list (completing-read (format-prompt "Switch to tab by name"
                                            (car recent-tabs))
                             recent-tabs nil nil nil nil recent-tabs))))
-  (tab-bar-select-tab (1+ (or (tab-bar--tab-index-by-name name) 0))))
+  (let ((tab-index (tab-bar--tab-index-by-name name)))
+    (if tab-index
+        (tab-bar-select-tab (1+ tab-index))
+      (tab-bar-new-tab)
+      (tab-bar-rename-tab name))))
 
 (defalias 'tab-bar-select-tab-by-name 'tab-bar-switch-to-tab)