diff --git a/emacs/feature/feature-project.el b/emacs/feature/feature-project.el index 617664a..98e3ea9 100644 --- a/emacs/feature/feature-project.el +++ b/emacs/feature/feature-project.el @@ -9,6 +9,7 @@ (require 'module-projectile) (require 'module-perspective) +(require 'module-work-projects) (provide 'feature-project) ;;; feature-project.el ends here. diff --git a/emacs/init.el b/emacs/init.el index 9df1012..7a59ebb 100644 --- a/emacs/init.el +++ b/emacs/init.el @@ -47,5 +47,9 @@ (load-theme 'misterioso) +(require 'server) +(if (not (server-running-p)) + (server-start)) + (provide 'init) ;;; init.el ends here diff --git a/emacs/module/module-perspective.el b/emacs/module/module-perspective.el index 27bed49..fe7e0ee 100644 --- a/emacs/module/module-perspective.el +++ b/emacs/module/module-perspective.el @@ -20,6 +20,17 @@ (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) @@ -38,6 +49,20 @@ (add-hook 'kill-emacs-hook 'my-persp-save) (add-hook 'after-init-hook 'my-persp-load) +;; setup emacs perspective +(persp-switch "emacs") +(dired "~/.config/emacs") +(persp-add-buffer current-buffer) + +;; go back to main perspective +(persp-switch "main") + + +;; Call this function when Emacs starts +(add-hook 'after-init-hook #'auto-create-work-project-perspectives) + + + (provide 'module-perspective) ;;; module-projectile.el ends here. diff --git a/emacs/module/module-work-projects.el b/emacs/module/module-work-projects.el new file mode 100644 index 0000000..646dd81 --- /dev/null +++ b/emacs/module/module-work-projects.el @@ -0,0 +1,20 @@ +;;; module-work-projects.el --- autoload work perspectives +;;; +;;; Commentary: +;;; +;;; Autoload work projects into perspectives. +;;; +;;; Code: + +(require 'module-perspective) + +(defun auto-create-work-project-perspectives () + "Automatically create perspectives for projects if the directory exists." + (let ((projects-dir "~/src/pascom/")) + (when (file-directory-p projects-dir) + (create-perspectives-for-projects projects-dir)))) + +;; Call this function when Emacs starts +(add-hook 'after-init-hook #'auto-create-work-project-perspectives) + +;;; module-work-projects.el ends here.