spacemacs/contrib/!window-management/perspectives/packages.el
vkz bd432752bc Replace after-init-hook with emacs-startup-hook
This has a benefit of not assuming that the user .emacs.d/ is in the
user home directory. Should continue to work as expected when this is
the case, but you could also start a fresh Emacs session like
so (assumes OSX):
open -a Emacs.app -n --args -q -l /path/to/emacs.d/init.el
So you don't have to muddle with symlinking your ~/.emacs.d or replacing
it with another just to try Spacemacs (or any other config). Note, that
this won't work with `after-init-hook` which doesn't appear to run when
Emacs is run with -q flag. As a result the `dotspacemacs/config` in your
.spacemacs won't run.
2015-08-04 23:17:12 -04:00

108 lines
3.5 KiB
EmacsLisp

(setq perspectives-packages
'(
perspective
persp-projectile
))
(defun perspectives/init-perspective ()
(use-package perspective
:commands (custom-persp
persp-add-buffer
persp-set-buffer
persp-kill
persp-remove-buffer
;; persp-cycle-next
;; persp-cycle-prev
persp-rename
persp-switch
projectile-persp-bridge
)
:init
(progn
;; muh perspectives
(defun custom-persp/emacs ()
(interactive)
(custom-persp ".emacs.d"
(find-file (locate-user-emacs-file "init.el"))))
(defun custom-persp/org ()
(interactive)
(custom-persp "@org"
(find-file (first org-agenda-files))))
(defun custom-persp/rcirc ()
(interactive)
(custom-persp "@RCIRC" (spacemacs/rcirc nil)))
(spacemacs/declare-prefix "L" "layouts")
(spacemacs/declare-prefix "Lo" "custom-perspectives")
(evil-leader/set-key
"La" 'persp-add-buffer
"LA" 'persp-set-buffer
"Lc" 'persp-kill
"Lk" 'persp-remove-buffer
"Ln" 'persp-next
"Loe" 'custom-persp/emacs
"Loi" 'custom-persp/rcirc
"Loo" 'custom-persp/org
"Lp" 'persp-prev
"Lr" 'persp-rename
"Ls" 'persp-switch))
:config
(progn
(persp-mode t)
;; loading code for our custom perspectives
;; taken from Magnar Sveen
(defmacro custom-persp (name &rest body)
`(let ((initialize (not (gethash ,name perspectives-hash)))
(current-perspective persp-curr))
(persp-switch ,name)
(when initialize ,@body)
(setq persp-last current-perspective)))
(add-hook 'emacs-startup-hook '(lambda ()
(persp-rename "@spacemacs")))
;; Jump to last perspective
;; taken from Magnar Sveen
(defun custom-persp-last ()
(interactive)
(persp-switch (persp-name persp-last)))
;; (defun persp-cycle-next ()
;; "Cycle throught the available perspectives."
;; (interactive)
;; (let ((next-pos (1+ (persp-name persp-curr)))
;; (list-size (length (persp-all-names))))
;; (cond ((eq 1 list-size) (persp-switch nil))
;; ((>= next-pos list-size) (persp-switch (nth 0 (persp-all-names))))
;; (t (persp-next)))))
;; (defun persp-cycle-prev ()
;; "Cycle throught the available perspectives."
;; (interactive)
;; (let ((next-pos (- (persp-name persp-curr) 1))
;; (list-size (length (persp-all-names))))
;; (cond ((eq 1 list-size) (persp-switch nil))
;; ((< next-pos 0) (persp-switch (nth (- list-size 1) (persp-all-names))))
;; (t (persp-prev)))))
)
))
(defun perspectives/init-persp-projectile ()
(use-package persp-projectile
:if perspective-enable-persp-projectile
:config
(progn
(projectile-persp-bridge helm-projectile-switch-project)
(evil-leader/set-key
"pp" 'spacemacs/persp-switch-project)
(defun spacemacs/persp-switch-project ()
(interactive)
(evil-leader/set-key
"pp" 'helm-projectile-switch-project)
(find-file "~/.spacemacs")
(helm-projectile-switch-project)
(persp-add-buffer "*spacemacs*")
(persp-kill "@spacemacs")))))