replace eyebrowse with persp

This commit is contained in:
2023-05-16 14:06:53 +02:00
parent 98ccb528ea
commit 48d6eb7528
4 changed files with 111 additions and 46 deletions

View File

@@ -86,6 +86,7 @@
;; bootstrap emacs ;; bootstrap emacs
(add-to-list 'load-path tvd-lisp-dir) (add-to-list 'load-path tvd-lisp-dir)
(require 'init-display) (require 'init-display)
(require 'init-modeline)
(require 'init-elget) (require 'init-elget)
(require 'init-system) (require 'init-system)
(require 'init-windowmgmt) (require 'init-windowmgmt)

View File

@@ -18,6 +18,7 @@
"Flag macro recording in mode-line" "Flag macro recording in mode-line"
:group 'tvd-mode-line-faces) :group 'tvd-mode-line-faces)
;; custom modeline ;; custom modeline
(setq-default mode-line-format (setq-default mode-line-format
(list (list
@@ -46,5 +47,5 @@
mode-line-end-spaces)) mode-line-end-spaces))
(provide 'init-moine.el) (provide 'init-modeline)
;;; init-modeline.el ends here ;;; init-modeline.el ends here

View File

@@ -214,6 +214,14 @@ Reach this hydra with <C-x w>
(global-set-key (kbd "C-x w") 'hydra-windows/body)) (global-set-key (kbd "C-x w") 'hydra-windows/body))
;; configure emacs window behavior
;; see also https://www.masteringemacs.org/article/demystifying-emacs-window-manager
(customize-set-variable 'display-buffer-base-action
'((display-buffer-reuse-window display-buffer-same-window)
(reusable-frames . t)))
(customize-set-variable 'even-window-sizes nil) ; avoid resizing
(provide 'init-windowmgmt) (provide 'init-windowmgmt)
;;; init-windowmgmt.el ends here ;;; init-windowmgmt.el ends here

View File

@@ -1,37 +1,92 @@
;; *** Eyebrowse Workspaces ;; *** Eyebrowse Workspaces
;; workspace configuration, like desktops. Seems to be a good implementation, w/o save though ;; workspace configuration, like desktops. Seems to be a good implementation, w/o save though
(use-package perspective
:bind
(use-package eyebrowse ;; global overrides
:init (("C-x C-b" . persp-ibuffer)
;; "prefix key" has to be set before loading, keep in mind, that ("C-x b" . persp-switch-to-buffer*)
;; if you change it here, you need to change it below as well! ("C-x k" . persp-kill-buffer*))
(setq eyebrowse-keymap-prefix (kbd "C-x C-x"))
(global-unset-key (kbd "C-x C-x"))
:config ;; perspective specifics
(:map perspective-map
("C-x" . persp-switch-last)
("c" . tvd-persp-new)
("q" . persp-kill)
("C-k" . persp-kill)
("?" . hydra-persp/body))
(defun tvd-new-eyebrowse-workspace () :custom
"Create new scratch buffer and ask for a name" (persp-mode-prefix-key (kbd "C-x C-x"))
(interactive)
(eyebrowse-rename-window-config (eyebrowse--get 'current-slot) (read-string "Workspace: "))
(autoscratch-buffer))
;; always enable :init
(eyebrowse-mode t) (persp-mode)
(setq eyebrowse-new-workspace 'tvd-new-eyebrowse-workspace :config
eyebrowse-switch-back-and-forth t (add-hook 'ibuffer-hook
eyebrowse-wrap-around t (lambda ()
eyebrowse-mode-line-style t (persp-ibuffer-set-filter-groups)
eyebrowse-slot-format "%s:init") (unless (eq ibuffer-sorting-mode 'alphabetic)
(ibuffer-do-sort-by-alphabetic))))
;; add a hydra, just in case, it contains hydra commands and hints (defun tvd-persp-new(name)
;; about the actual key bindings, it's also being refered from (interactive "sEnter new perspective name: ")
;; hydra-window/body with "e" (persp-new name)
(when (fboundp 'defhydra) (persp-switch name))
(defhydra hydra-eyebrowse (:color blue)
" (when (fboundp 'defhydra)
(defhydra hydra-persp (:color blue)
"
^Persp Workspace Management^
^^--------------------------------------
_C-x_: last workspace (C-x C-x C-x)
_n_: next workspace (C-x C-x <right>)
_p_: prev workspace (C-x C-x <left>)
_q_: close workspace (C-x C-x q) + (C-x C-x C-k)
_r_: rename workspace (C-x C-x t)
_c_: create workspace (C-x C-x n)
Use C-x C-x to access persp directly.
"
("C-x" persp-switch-last nil)
("n" persp-next nil)
("p" persp-prev nil)
("C-k" persp-kill nil)
("r" persp-rename nil)
("c" tvd-persp-new nil)
("q" nil nil :color red))))
(when nil
(use-package eyebrowse
:init
;; "prefix key" has to be set before loading, keep in mind, that
;; if you change it here, you need to change it below as well!
(setq eyebrowse-keymap-prefix (kbd "C-x C-x"))
(global-unset-key (kbd "C-x C-x"))
:config
(defun tvd-new-eyebrowse-workspace ()
"Create new scratch buffer and ask for a name"
(interactive)
(eyebrowse-rename-window-config (eyebrowse--get 'current-slot) (read-string "Workspace: "))
(autoscratch-buffer))
;; always enable
(eyebrowse-mode t)
(setq eyebrowse-new-workspace 'tvd-new-eyebrowse-workspace
eyebrowse-switch-back-and-forth t
eyebrowse-wrap-around t
eyebrowse-mode-line-style t
eyebrowse-slot-format "%s:init")
;; add a hydra, just in case, it contains hydra commands and hints
;; about the actual key bindings, it's also being refered from
;; hydra-window/body with "e"
(when (fboundp 'defhydra)
(defhydra hydra-eyebrowse (:color blue)
"
^Eyebrowse Workspace Management^ ^Eyebrowse Workspace Management^
^^-------------------------------------- ^^--------------------------------------
_l_: last window (C-x C-x C-x) _l_: last window (C-x C-x C-x)
@@ -43,27 +98,27 @@ _c_: create workspace (C-x C-x n)
Use C-x C-x to access eyebrowse directly. Use C-x C-x to access eyebrowse directly.
" "
("l" eyebrowse-last-window-config nil) ("l" eyebrowse-last-window-config nil)
("n" eyebrowse-next-window-config nil) ("n" eyebrowse-next-window-config nil)
("p" eyebrowse-prev-window-config nil) ("p" eyebrowse-prev-window-config nil)
("x" eyebrowse-close-window-config nil) ("x" eyebrowse-close-window-config nil)
("t" eyebrowse-rename-window-config nil) ("t" eyebrowse-rename-window-config nil)
("c" eyebrowse-create-window-config nil) ("c" eyebrowse-create-window-config nil)
("q" nil nil :color red))) ("q" nil nil :color red)))
;;Modifying the eyebrowse keymap directly doesn't work because it's ;;Modifying the eyebrowse keymap directly doesn't work because it's
;; not setup correctly. I sent a pull request to fix this: ;; not setup correctly. I sent a pull request to fix this:
;; https://github.com/wasamasa/eyebrowse/pull/94, however, vaslilly choosed ;; https://github.com/wasamasa/eyebrowse/pull/94, however, vaslilly choosed
;; not to accept it. So, I need to configure the whole chords for every ;; not to accept it. So, I need to configure the whole chords for every
;; function I use AND set the "prefix key" using the weird way above ;; function I use AND set the "prefix key" using the weird way above
;; (before loading). ;; (before loading).
(global-set-key (kbd "C-x C-x C-x") 'eyebrowse-last-window-config) (global-set-key (kbd "C-x C-x C-x") 'eyebrowse-last-window-config)
(global-set-key (kbd "C-x C-x <right>") 'eyebrowse-next-window-config) (global-set-key (kbd "C-x C-x <right>") 'eyebrowse-next-window-config)
(global-set-key (kbd "C-x C-x <left>") 'eyebrowse-prev-window-config) (global-set-key (kbd "C-x C-x <left>") 'eyebrowse-prev-window-config)
(global-set-key (kbd "C-x C-x q") 'eyebrowse-close-window-config) (global-set-key (kbd "C-x C-x q") 'eyebrowse-close-window-config)
(global-set-key (kbd "C-x C-x t") 'eyebrowse-rename-window-config) (global-set-key (kbd "C-x C-x t") 'eyebrowse-rename-window-config)
(global-set-key (kbd "C-x C-x n") 'eyebrowse-create-window-config) (global-set-key (kbd "C-x C-x n") 'eyebrowse-create-window-config)
(global-set-key (kbd "C-x C-x ?") 'hydra-eyebrowse/body)) (global-set-key (kbd "C-x C-x ?") 'hydra-eyebrowse/body)))
;; There's also some face config, see defcustom at end of file! ;; There's also some face config, see defcustom at end of file!