【Emacs】tab-bar-modeにおけるタブ移動をワンストロークで行う設定

書いてみた.

tab-bar-modeはM-x tab-bar-modeとするか ,もしくは設定ファイルに(tab-bar-mode +1)と書いて有効化する.

それぞれのtab-bar には通し番号がついており,それらの間の移動をキーボードからワンストロークで行いたかったので,簡単な設定をつけた.

(desktop-save-mode 1) ;; tabの構成を含めて復元できる(実質的な永続化の実現)
(with-eval-after-load 'tab-bar
  (setq tab-bar-tab-hints t) ;; タブに番号表示
  (setq tab-bar-new-button-show nil)  ;; 新規タブボタンは非表示
  (setq tab-bar-close-button-show nil) ;; タブ削除ボタンは非表示
  (setq tab-bar-format '(tab-bar-format-tabs tab-bar-separator)) ;; ヒストリのボタンは不要
  (tab-bar-history-mode +1) ;; 各タブについて,ウィンドウ構成のヒストリを記憶する

  ;; タブ番号に基づいてワンストロークで移動する
  (defvar tab-bar-switch-prefix "C-M-%d") ;; C-M-1はタブ番号1への移動, C-M-2はタブ番号2への移動
  (defvar tab-bar-top-tab "1") ;; タブ番号は1から開始
  (defvar tab-bar-bottom-tab "9") ;; 9つもタブを開くこと機会はあまりないが,ひとまず番号は9まで
  (defun tab-bar-set-keybind ()
    (mapc (lambda (i)
            (global-set-key (kbd (format tab-bar-switch-prefix i))
                            `(lambda ()
                               (interactive)
                               (tab-bar-select-tab ,(int-to-string i)))))
          (number-sequence (string-to-number tab-bar-top-tab)
                           (string-to-number tab-bar-bottom-tab))))
  (tab-bar-set-keybind))

上記tab-bar-set-keybindの実行により,C-M-1からC-M-9までがそれぞれタブ番号1からタブ番号9までのショートカットキーとして登録される.

このワンストローク移動の設定はperspective-modeの設定を参考にした.perspective-modeからtab-bar-modeへの移行の機会でちょうど良かった.

qiita.com