diff options
Diffstat (limited to '.emacs.local.d/modes')
| -rw-r--r-- | .emacs.local.d/modes/hydra.el | 2 | ||||
| -rw-r--r-- | .emacs.local.d/modes/tabbar.el | 70 | 
2 files changed, 71 insertions, 1 deletions
| diff --git a/.emacs.local.d/modes/hydra.el b/.emacs.local.d/modes/hydra.el index 412970b..071581b 100644 --- a/.emacs.local.d/modes/hydra.el +++ b/.emacs.local.d/modes/hydra.el @@ -57,7 +57,7 @@ _s-f_: file            _a_: ag                _i_: Ibuffer           _c_: cache    ("t" tab-new "Create a new tab" :column "Creation")    ("d" dired-other-tab "Open Dired in another tab")    ("f" find-file-other-tab "Find file in another tab") -  ("0" tab-close "Close current tab") +  ("x" tab-close "Close current tab")    ("m" tab-move "Move current tab" :column "Management")    ("r" tab-rename "Rename Tab")    ("<return>" tab-bar-select-tab-by-name "Select tab by name" :column "Navigation") diff --git a/.emacs.local.d/modes/tabbar.el b/.emacs.local.d/modes/tabbar.el new file mode 100644 index 0000000..bd01174 --- /dev/null +++ b/.emacs.local.d/modes/tabbar.el @@ -0,0 +1,70 @@ +;; Inherit the face of `doom-modeline-panel` for better appearance +(set-face-attribute 'tab-bar-tab nil :inherit 'doom-modeline-panel :foreground nil :background nil) + +;; Totally customize the format of the tab bar name +(defun my/tab-bar-format (tab i) +  (propertize +   (format +    (concat +      (if (eq (car tab) 'current-tab) +          "🔥 " "") +      "%s") +    (alist-get 'name tab)) +   'face (list (append +                  '(:foreground "#FFFFFF") +                  (if (eq (car tab) 'current-tab) +                      '(:box t) +                      '()))))) + +(global-set-key (kbd "C-<next>") 'tab-bar-switch-to-next-tab) +(global-set-key (kbd "C-<prior>") 'tab-bar-switch-to-prev-tab) + +;; Replace the default tab bar function +(setq tab-bar-tab-name-format-function #'my/tab-bar-format) + +(defun my/tab-bar-tab-name-function () +  "Return project name if in a project, or default tab-bar name if not. +The default tab-bar name uses the buffer name." +  (let ((project-name (projectile-project-name))) +    (if (string= "-" project-name) +        (tab-bar-tab-name-current) +      (projectile-project-name)))) + +(setq tab-bar-tab-name-function #'my/tab-bar-tab-name-function) + +;; Only show the tab bar if there are 2 or more tabs +(setq tab-bar-show 1) + +(defun my/tab-bar-string () "HELLO") + +;; Customize the tab bar format to add the global mode line string +(setq tab-bar-format '(tab-bar-format-tabs tab-bar-separator tab-bar-format-align-right tab-bar-format-global)) + +(add-to-list 'global-mode-string "HELLO") + +;; Make sure mode line text in the tab bar can be read +(set-face-attribute 'tab-bar nil :foreground "#FFFFFF") + +(defun my/project-create-tab () +  (interactive) +  (tab-bar-new-tab) +  (magit-status)) + +(setq project-switch-commands #'my/project-create-tab) + +(defun my/switch-to-tab-buffer () +  (interactive) +  (if (project-current) +      (call-interactively #'projectile-switch-to-buffer) +    (call-interactively #'switch-to-buffer))) + +(global-set-key (kbd "C-x b") #'my/switch-to-tab-buffer) + +;; Turn on tab bar mode after startup +(tab-bar-mode 1) + +;; Save the desktop session +(desktop-save-mode 1) + + +(setq tab-bar-new-tab-choice "*dashboard*") | 
