;;; module-perspective.el --- workspace management ;;; ;;; Commentary: ;;; ;;; Declutter buffer lists. ;;; ;;; Code: (require 'module-pkg) (pkg/require 'perspective) (pkg/require 'persp-projectile) (persp-mode +1) (persp-turn-off-modestring) (setq doom-modeline-persp-name t) (defun my-persp-save () (persp-state-save "~/.config/emacs/perspectives")) (defun my-persp-load () (persp-state-load "~/.config/emacs/perspectives")) (defun create-perspectives-for-projects (root-dir) "Create perspectives for each subdirectory in ROOT-DIR." (interactive "DSelect root directory: ") (let ((subdirs (directory-files root-dir t directory-files-no-dot-files-regexp))) (dolist (dir subdirs) (when (file-directory-p dir) (let ((project-name (file-name-nondirectory dir))) (persp-switch project-name) (dired dir) (persp-add-buffer (current-buffer))))))) (global-set-key (kbd "C-x k") 'persp-kill-buffer*) (global-set-key (kbd "C-x x s") 'persp-switch) (global-set-key (kbd "C-x x k") 'persp-kill) (global-set-key (kbd "C-x x r") 'persp-rename) (global-set-key (kbd "C-x x n") 'persp-next) (global-set-key (kbd "C-x x p") 'persp-prev) (global-set-key (kbd "C-x C-b") 'persp-ibuffer) (define-key projectile-mode-map (kbd "C-x p s") 'projectile-persp-switch-project) (autoload 'projectile-project-root "projectile") (setq consult-project-root-function #'projectile-project-root) (persp-switch "main") (provide 'module-perspective) ;;; module-projectile.el ends here.