syscfg/emacs/module/module-perspective.el

52 lines
1.5 KiB
EmacsLisp

;;; 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 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)))))))
;; auto-create common perspectives
(persp-switch "notes")
(dired "~/notes")
(persp-add-buffer (current-buffer))
(persp-switch "main")
(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.