doomemacs/modules/ui/tabbar/config.el
Henrik Lissner 92ca6762ac
ui/tabbar: rewrite to use centaur-tabs
Plus some modifications to make tabs truly window-local, like they are
in any tabbed modern editor.
2019-07-12 17:40:48 +02:00

39 lines
1.8 KiB
EmacsLisp

;;; ui/tabbar/config.el -*- lexical-binding: t; -*-
(def-package! centaur-tabs
:after-call (after-find-file dired-initial-position-hook)
:config
(setq centaur-tabs-height 28
centaur-tabs-set-bar 'left
centaur-tabs-set-modified-marker t)
(defun +tabbar|init-frames ()
(dolist (frame (frame-list))
(if (not centaur-tabs-mode)
(set-frame-parameter frame 'buffer-predicate (frame-parameter frame 'old-buffer-predicate))
(set-frame-parameter frame 'old-buffer-predicate (frame-parameter frame 'buffer-predicate))
(set-frame-parameter frame 'buffer-predicate #'+tabbar-buffer-predicate))))
(add-hook 'centaur-tabs-mode-hook #'+tabbar|init-frames)
(setq centaur-tabs-buffer-list-function #'+tabbar-window-buffer-list
centaur-tabs-buffer-groups-function #'+tabbar-buffer-groups)
(remove-hook 'post-command-hook centaur-tabs-adjust-buffer-order-function)
(add-hook 'doom-switch-buffer-hook #'centaur-tabs-adjust-buffer-order)
(advice-add #'centaur-tabs-buffer-close-tab :override #'+tabbar*kill-tab-maybe)
(advice-add #'bury-buffer :around #'+tabbar*bury-buffer)
(advice-add #'kill-current-buffer :before #'+tabbar*kill-current-buffer)
(add-hook 'doom-switch-buffer-hook #'+tabbar|add-buffer)
(add-hook 'doom-switch-window-hook #'+tabbar|new-window)
(add-hook '+doom-dashboard-mode-hook #'centaur-tabs-local-mode)
(map! (:map centaur-tabs-mode-map
[remap delete-window] #'+tabbar/close-tab-or-window
[remap +workspace/close-window-or-workspace] #'+tabbar/close-tab-or-window)
(:after persp-mode
:map persp-mode-map
[remap delete-window] #'+tabbar/close-tab-or-window
[remap +workspace/close-window-or-workspace] #'+tabbar/close-tab-or-window))
(centaur-tabs-mode +1))