This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/contrib/!window-management/perspectives
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
..
config.el Prefix categories with ! 2015-05-25 00:50:38 -04:00
packages.el Replace after-init-hook with emacs-startup-hook 2015-08-04 23:17:12 -04:00
README.org Fix various key bindings in converted READMEs 2015-06-11 21:31:42 -04:00

Perspectives contribution layer for Spacemacs

Description

This contrib layer sets up perspective-mode. And also defines custom perspectives with a macro so that you don't have to do more steps.

Install

Layer

To use this contribution add it to your ~/.spacemacs

  (setq-default dotspacemacs-configuration-layers '(perspectives))

Custom Perspective Macro

If you want to add a new custom-persp (for example if you want to have IRC on its own perspective or maybe calendar or gnus) you have to use the macro custom-persp as follows:

  (defun custom-persp/<persp-function-name> ()
  (interactive)
  (custom-persp "<name-to-be-shown-in-the-modeline>"
      (... stuff to be done in the persp activating a major mode like twittering or whatever ...)))

You can check out the layer's packages.el to see some examples of the custom-perspectives. if you define something like this you may be able to define a perspective with a layout.

  (defun custom-persp/c++-project ()
  (interactive)
  (custom-persp "c++"
      (progn
          (find-file "~/path/to/first/file.cpp")
          (split-window-right)
          (find-file "~/path/to/second/file.cpp")
          (... do more stuff but be careful not to destroy the universe ...)
      )))

Then you just need to add a keybinding to your custom persp, we use SPC L o [your key here] (Perspective open <key>)

  (evil-leader/set-key "Lo<your key here>" 'custom-persp/<persp-function-name>)

Predefined custom perspectives

Per project custom perpsective

As the name suggests, this persp-projectile mode creates a new perspective once you switch to a new project with SPC p s. It must be said that in the current implementation in order for this to work you must first open a custom-perspective like SPC L o e to go to the init.el in the spacemacs.

  (setq-default dotspacemacs-configuration-layers '(
    (perspectives :variables
                  perspective-enable-persp-projectile t)))

Org-agenda custom perspective

Here we define a custom perspective that adds items to your org-agenda. If you do not know what that is check the docs.

The cool part is that you can have many org files with todos in the agenda and with one simple command you can gather all the todos from all the agenda files you have and show them in a single buffer. (in evil the command starts with ;a)

RCIRC custom perspective

Now you can also open rcirc in a new layer to keep all the chat buffers in one perspective isolated from your work buffers.

You will have to use the perspective layer as well as the rcirc layer:

  (setq-default dotspacemacs-configuration-layers '(rcirc
                                                    perspectives))

Key Bindings

Prefix command for perspective commands is SPC L (for Layout).

Key Binding Description
SPC L A Add current buffer to the current perspective
SPC L c Close a perspective (kill it)
SPC L k Remove current buffer from the current perspective
SPC L n Next perspective
SPC L p Previous perspective
SPC L r Rename current perspective
SPC L s Switch to a perspective

Custom Perspectives Key Bindings

Key Binding Description
SPC L o e Emacs custom perspective
SPC L o i RCIRC custom perspective (needs the rcirc layer enabled)
SPC L o o Org custom perspective