]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/tab-bar.el (tab-bar-select-tab): Support negative arg.
authorJuri Linkov <juri@linkov.net>
Tue, 16 Mar 2021 17:54:54 +0000 (19:54 +0200)
committerJuri Linkov <juri@linkov.net>
Tue, 16 Mar 2021 17:54:54 +0000 (19:54 +0200)
lisp/tab-bar.el

index 888f493ddcc323684d466b0e0c061ae1055af971..351c8cff3494cddfc0fd5d47b89f1b23734c84a7 100644 (file)
@@ -814,7 +814,7 @@ on the tab bar instead."
 When this command is bound to a numeric key (with a prefix or modifier key
 using `tab-bar-select-tab-modifiers'), calling it without an argument
 will translate its bound numeric key to the numeric argument.
-ARG counts from 1."
+ARG counts from 1.  Negative ARG counts tabs from the end of the tab bar."
   (interactive "P")
   (unless (integerp arg)
     (let ((key (event-basic-type last-command-event)))
@@ -824,7 +824,9 @@ ARG counts from 1."
 
   (let* ((tabs (funcall tab-bar-tabs-function))
          (from-index (tab-bar--current-tab-index tabs))
-         (to-index (1- (max 1 (min arg (length tabs))))))
+         (to-index (if (< arg 0) (+ (length tabs) (1+ arg)) arg))
+         (to-index (1- (max 1 (min to-index (length tabs))))))
+
     (unless (eq from-index to-index)
       (let* ((from-tab (tab-bar--tab))
              (to-tab (nth to-index tabs))