Create tab-bar key sequences for first 10 tabs

This commit is contained in:
Howard Abrams 2025-12-02 17:13:16 -08:00
parent 4de1b825f7
commit 82ecae035c

View file

@ -1048,13 +1048,13 @@ And some shortcut keys from the =general= project:
I want to quickly jump, by the number shown on the tab, to that grouping. The following two functions create leader sequences with the name of the tab group: I want to quickly jump, by the number shown on the tab, to that grouping. The following two functions create leader sequences with the name of the tab group:
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defun ha-tab-bar-update-names () (defun ha-tab-bar-update-names (&optional changed-tab)
"Create normal-mode keybindings for the tab groupings. "Create normal-mode keybindings for the tab groupings.
This creates `SPC TAB 1' to jump to the first tab, etc." This creates `SPC TAB 1' to jump to the first tab, etc."
(interactive) (interactive)
;; Remove all previously created keybindings: ;; Remove all previously created keybindings:
(ignore-errors (ignore-errors
(dolist (indx (number-sequence 1 9)) (dolist (indx (number-sequence 0 9))
(general-nmap :prefix "SPC" (format "<tab> %d" indx) nil))) (general-nmap :prefix "SPC" (format "<tab> %d" indx) nil)))
;; Loop through the existing tabs, create keys for each: ;; Loop through the existing tabs, create keys for each:
@ -1063,11 +1063,14 @@ I want to quickly jump, by the number shown on the tab, to that grouping. The fo
(defun ha-tab-bar-update-tab-keybinding (tab-deets indx) (defun ha-tab-bar-update-tab-keybinding (tab-deets indx)
"Create a keybinding to jump to tab described by TAB-DEETS. "Create a keybinding to jump to tab described by TAB-DEETS.
The key sequence, `SPC' `TAB' then INDX." The key sequence, `SPC' `TAB' then INDX."
(let ((name (alist-get 'name tab-deets))) (when (< indx 10)
(general-nmap :prefix "SPC" (let ((name (alist-get 'name tab-deets)))
(format "<tab> %d" (1+ indx)) (general-nmap :prefix "SPC"
`(,name . ;; As indx is starts with 0, we need to create keybindings to
(lambda () (interactive) (tab-bar-select-tab ,(1+ indx))))))) ;; match the tab labels by incrementing it by one ... unless,
;; we are at 10, where we use 0 instead:
(format "<tab> %d" (if (= indx 9) 0 (1+ indx)))
`(,name . (lambda () (interactive) (tab-bar-select-tab ,(1+ indx))))))))
#+END_SRC #+END_SRC
Any time I create or delete a new tab, we can call =ha-tab-bar-update-names=: Any time I create or delete a new tab, we can call =ha-tab-bar-update-names=: