Refactor prespecitves layer README and move key bindings on L prefix
This commit is contained in:
parent
834c0aea4f
commit
a721dc55fe
|
@ -1,19 +1,48 @@
|
|||
# Perspectives
|
||||
# Perspectives contribution layer for Spacemacs
|
||||
|
||||
<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc/generate-toc again -->
|
||||
**Table of Contents**
|
||||
|
||||
- [Perspectives contribution layer for Spacemacs](#perspectives-contribution-layer-for-spacemacs)
|
||||
- [Description](#description)
|
||||
- [Install](#install)
|
||||
- [Layer](#layer)
|
||||
- [Custom Perspective Macro](#custom-perspective-macro)
|
||||
- [Predefined custom perspectives](#predefined-custom-perspectives)
|
||||
- [-](#-)
|
||||
- [Org-agenda custom perspective](#org-agenda-custom-perspective)
|
||||
- [RCIRC custom perspective](#rcirc-custom-perspective)
|
||||
- [Key Bindings](#key-bindings)
|
||||
- [Custom Perspectives Key Bindings](#custom-perspectives-key-bindings)
|
||||
|
||||
<!-- markdown-toc end -->
|
||||
|
||||
## 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.
|
||||
|
||||
## Custom Perspective Macro
|
||||
## Install
|
||||
|
||||
### Layer
|
||||
|
||||
To use this contribution add it to your `~/.spacemacs`
|
||||
|
||||
```elisp
|
||||
(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:
|
||||
|
||||
```elisp
|
||||
(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 ...)))
|
||||
(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
|
||||
|
@ -21,36 +50,41 @@ custom-perspectives. if you define something like this you may be able
|
|||
to define a perspective with a layout.
|
||||
|
||||
```elisp
|
||||
(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 ...)
|
||||
)))
|
||||
(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> P o [your key here]` (Perspective open <key>)
|
||||
|
||||
``` elisp
|
||||
(evil-leader/set-key "Po<your key here>" 'custom-persp/<persp-function-name>))
|
||||
```
|
||||
|
||||
|
||||
## Keybindings
|
||||
|
||||
Perspective-mode defines keybindings under `C-x x` so we will take a more
|
||||
`spacemacsy` approach and define them under out perspective map `<SPC> P`
|
||||
<kbd>SPC L o [your key here]</kbd> (Perspective open <key>)
|
||||
|
||||
```elisp
|
||||
(projectile-persp-bridge helm-projectile)
|
||||
(setq projectile-switch-project-action 'helm-projectile)
|
||||
(evil-leader/set-key "Lo<your key here>" 'custom-persp/<persp-function-name>))
|
||||
```
|
||||
|
||||
### org-agenda `<SPC> P o o` (Perspective Open Org)
|
||||
## 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.
|
||||
|
||||
If you are a helm person, and would rather use helm for projectile add this to
|
||||
your config as well:
|
||||
|
||||
```elisp
|
||||
(projectile-persp-bridge helm-projectile)
|
||||
```
|
||||
|
||||
#### 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
|
||||
|
@ -61,22 +95,7 @@ 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`)
|
||||
|
||||
## Persp-Projectile
|
||||
|
||||
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 P o e` to go to the init.el in the spacemacs.
|
||||
|
||||
If you are a helm person, and would rather use helm for projectile add this to
|
||||
your config as well:
|
||||
|
||||
```elisp
|
||||
(projectile-persp-bridge helm-projectile)
|
||||
(setq projectile-switch-project-action 'helm-projectile)
|
||||
```
|
||||
|
||||
## RCIRC
|
||||
#### 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.
|
||||
|
@ -87,3 +106,25 @@ 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 <kbd>SPC L</kbd> (for Layout).
|
||||
|
||||
Key Binding | Description
|
||||
----------------------|------------------------------------------------
|
||||
<kbd>SPC L A</kbd> | Add current buffer to the current perspective
|
||||
<kbd>SPC L c</kbd> | Close a perspective (kill it)
|
||||
<kbd>SPC L k</kbd> | Remove current buffer from the current perspective
|
||||
<kbd>SPC L n</kbd> | Next perspective
|
||||
<kbd>SPC L p</kbd> | Previous perspective
|
||||
<kbd>SPC L r</kbd> | Rename current perspective
|
||||
<kbd>SPC L s</kbd> | Switch to a perspective
|
||||
|
||||
### Custom Perspectives Key Bindings
|
||||
|
||||
Key Binding | Description
|
||||
----------------------|------------------------------------------------
|
||||
<kbd>SPC L o e</kbd> | Emacs custom perspective
|
||||
<kbd>SPC L o i</kbd> | RCIRC custom perspective
|
||||
<kbd>SPC L o o</kbd> | Org custom perspective
|
||||
|
|
|
@ -6,4 +6,5 @@
|
|||
|
||||
;; Variables
|
||||
(defvar perspective-enable-persp-projectile nil
|
||||
"If non nil the helm-projectile-swtich-project command will create a new perspective for each new project.")
|
||||
"If non nil the helm-projectile-swtich-project command will create
|
||||
a new perspective for each new project.")
|
||||
|
|
|
@ -38,22 +38,21 @@ which require an initialization must be listed explicitly in the list.")
|
|||
(defun custom-persp/rcirc ()
|
||||
(interactive)
|
||||
(custom-persp "@RCIRC" (rcirc-config)))
|
||||
(evil-leader/set-key
|
||||
"Poi" 'custom-persp/rcirc)
|
||||
|
||||
(spacemacs/declare-prefix "P" "perspectives")
|
||||
(spacemacs/declare-prefix "Po" "custom-perspectives")
|
||||
(spacemacs/declare-prefix "L" "layouts")
|
||||
(spacemacs/declare-prefix "Lo" "custom-perspectives")
|
||||
(evil-leader/set-key
|
||||
"Pa" 'persp-add-buffer
|
||||
"PA" 'persp-set-buffer
|
||||
"Pc" 'persp-kill
|
||||
"Pk" 'persp-remove-buffer
|
||||
"Pn" 'persp-next
|
||||
"Poe" 'custom-persp/emacs
|
||||
"Poo" 'custom-persp/org
|
||||
"Pp" 'persp-prev
|
||||
"Pr" 'persp-rename
|
||||
"Ps" 'persp-switch))
|
||||
"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…
Reference in a new issue