52 lines
1.5 KiB
EmacsLisp
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.
|
|
|