Reorganize DOCUMENTATION.md, update sections and core pillars

This commit is contained in:
syl20bnr 2015-02-08 21:21:23 -05:00
parent 1ff47e09ac
commit 71d96a06f3

View file

@ -4,13 +4,17 @@
**Table of Contents**
- [Spacemacs Documentation](#spacemacs-documentation)
- [Philosophy](#philosophy)
- [Easy](#easy)
- [Core Pillars](#core-pillars)
- [Mnemonic](#mnemonic)
- [Discoverability](#discoverability)
- [Consistency](#consistency)
- [Crowd-Configured](#crowd-configured)
- [Goals](#goals)
- [Screenshots](#screenshots)
- [Who can benefit from this ?](#who-can-benefit-from-this-)
- [Update and Rollback](#update-and-rollback)
- [Update Spacemacs repository](#update-spacemacs-repository)
- [Update packages](#update-packages)
- [Configuration layers](#configuration-layers)
- [Structure](#structure)
- [Extensions and Packages](#extensions-and-packages)
@ -33,7 +37,6 @@
- [Excluding packages](#excluding-packages)
- [Hooks](#hooks)
- [Custom variables](#custom-variables)
- [Using the package list buffer](#using-the-package-list-buffer)
- [Main principles](#main-principles)
- [Evil](#evil)
- [States](#states)
@ -43,22 +46,31 @@
- [Differences between Vim, Evil and Spacemacs](#differences-between-vim-evil-and-spacemacs)
- [The vim-surround case](#the-vim-surround-case)
- [Evil plugins](#evil-plugins)
- [Color themes](#color-themes)
- [UI elements](#ui-elements)
- [Toggles](#toggles)
- [Mode-line](#mode-line)
- [Flycheck integration](#flycheck-integration)
- [Anzu integration](#anzu-integration)
- [Battery status integration](#battery-status-integration)
- [Powerline separators](#powerline-separators)
- [Minor Modes](#minor-modes)
- [Font](#font)
- [Spacemacs UI](#spacemacs-ui)
- [Graphical UI](#graphical-ui)
- [Color themes](#color-themes)
- [Font](#font)
- [Graphical UI Toggles](#graphical-ui-toggles)
- [Mode-line](#mode-line)
- [Flycheck integration](#flycheck-integration)
- [Anzu integration](#anzu-integration)
- [Battery status integration](#battery-status-integration)
- [Powerline separators](#powerline-separators)
- [Minor Modes](#minor-modes)
- [Commands](#commands)
- [Vim key bindings](#vim-key-bindings)
- [Escaping](#escaping)
- [Executing Vim and Emacs ex/M-x commands](#executing-vim-and-emacs-exm-x-commands)
- [Leader key](#leader-key)
- [Reserved prefix command for user](#reserved-prefix-command-for-user)
- [Escaping](#escaping)
- [Executing Vim, Emacs and shell commands](#executing-vim-emacs-and-shell-commands)
- [Helm](#helm)
- [Helm micro-state](#helm-micro-state)
- [Discovering](#discovering)
- [Key bindings](#key-bindings)
- [Available layers](#available-layers)
- [Available packages in Spacemacs](#available-packages-in-spacemacs)
- [New packages from ELPA repositories](#new-packages-from-elpa-repositories)
- [Toggles](#toggles)
- [Navigating](#navigating)
- [Point/Cursor](#pointcursor)
- [Smooth scrolling](#smooth-scrolling)
@ -115,7 +127,7 @@
- [Lisp state Auto-switch commands](#lisp-state-auto-switch-commands)
- [Lisp state commands](#lisp-state-commands)
- [Lisp state Other commands](#lisp-state-other-commands)
- [Project management](#project-management)
- [Managing projects](#managing-projects)
- [Registers](#registers)
- [Errors handling](#errors-handling)
- [Compiling](#compiling)
@ -141,44 +153,56 @@
<!-- markdown-toc end -->
# Philosophy
# Core Pillars
Three core pillars: Easy, Consistency, "Crowd-Configured".
Four core pillars: Mnemonic, Discoverability, Consistency, "Crowd-Configured".
## Easy
If any of these core pillars is violated open an issue and we'll fix it.
`Spacemacs` organizes key bindings by mnemonic namespaces. If you are looking
for commands to operate on your buffer, they are right under <kbd>SPC b</kbd>,
if you want to operate on your project, then it is <kbd>SPC p</kbd>, etc...
## Mnemonic
`Spacemacs` organizes key bindings by mnemonic namespaces as much as possible.
If you are looking for commands to operate on your buffer, they are right under
<kbd>SPC b</kbd>, if you want to operate on your project, then it is
<kbd>SPC p</kbd>, etc...
## Discoverability
`Spacemacs` comes with a dedicated major mode `spacemacs-mode`. Its goal is to
give useful feedbacks and perform maintenance tasks easily.
give useful feedbacks and easily perform maintenance tasks.
It also comes with dedicated [helm][] sources to quickly find layers, packages
and more.
[guide-key][] is enabled by default, it will display all the available key
bindings in a dedicated popup buffer.
## Consistency
Similar functionalities should have the same key binding. For instance if you are
looking for the definition of a function, the binding is <kbd>SPC m g</kbd>,
`m` for `major mode` and `g` for `go to`. And no matter what is the major mode it
should be the same binding.
Similar functionalities should have the same key binding no matter which major
is currently active. For instance if you are looking for the definition of a
function, the binding is <kbd>SPC m g g</kbd>, `m` for `major mode` and `g g`
for `go to thing at point`. No matter what is the major mode it is the same
binding to perform this action.
This is also true for the documentation, each configuration layer comes with
an associated `README.md` file with the same base layout.
The consistency core pillar is supported by a convention file:
[CONVENTIONS.md][]
## Crowd-Configured
This term does not really exist but I'm sure you know what it means.
By defining an very light structure called `configuration layer` which is easy
to understand, `Spacemacs` makes it easy to contribute additional support.
This is the most powerful feature of `Spacemacs`. Anybody can submit upstream
his or her configuration layer and anybody can use it in a second by adding it
in a dotfile and by optionally filtering it (ie. removing unwanted packages).
The conventions in [CONVENTIONS.md][] make it easy to get the spacemacs way
and keep consistency even if there are a lot of contributions.
So by cloning this repository you have a centralized place of configured
packages tuned by expert in their domain. And most importantly it should be
consistent with the whole experience provided by `Spacemacs`.
If some packages are missing from core `Spacemacs` but they are present in
several contribution layers, chances are that they should be in core and we
can easily move them there.
If any of this core pillars are violated open an issue and we'll try to fix
this.
`Crowd-configuration` is the most powerful pillar of `Spacemacs`. Anybody can
submit upstream improvements to configuration layers or a whole new one. Any
user can easily and directly use this layer by adding it to a list in a
dotfile. It is even possible to exclude _any_ unwanted packages.
# Goals
@ -188,18 +212,18 @@ this.
**keep your fingers on the home row** as much as possible, no matter the mode
you are in.
- **Crowed-configured**: Contribute your own personal layer upstream and
everybody can use it.
- **Crowed-configured**: Contribute easily your improvements and new
configuration layers.
- **Minimalistic and nice UI**, keep your available screen space for what
matters: your text files.
- **Minimalistic and nice graphical UI**, keep your available screen space for
what matters: your text files.
- **Mnemonic and consistent key bindings** which should be easier to learn
and remember.
and remember and be the same in all major modes.
- **Fast boot time**.
- **Fast boot time**, everything is lazy-loaded.
- **Lower the risk of RSI**.
- **Lower the risk of RSI** by heavily using the space bar instead of modifiers.
- Hopefully, if it's not already the case:
@ -226,7 +250,8 @@ project.*
next level by using Emacs.
It is also a good fit for people wanting to **lower the [risk of RSI][RSI]**
induced by the default Emacs key bindings.
induced by the default Emacs key bindings (this is an assumption, there is no
official studies to prove this).
Emacs users wanting to learn **a different way to edit files** or wanting to
learn Vim key bindings.
@ -235,10 +260,31 @@ As a side note, if you are a programmer and you don't know Vim key bindings
yet, I deeply recommend you to learn the basics as recommended in
[Sacha Chua's one-page guide][sacha_guide] about how to learn Emacs.
# Configuration layers
# Update and Rollback
_This part of Spacemacs is still in beta, the structure can change over
time. Refer to commit messages for more information in case of big changes._
For now it is still needed to update the `Spacemacs` repository manually.
## Update Spacemacs repository
Close Emacs and update the git repository:
```sh
git pull --rebase
git submodule sync; git submodule update
```
**Note** It is recommended to update the packages first, see next session.
## Update packages
To update `Spacemacs` press <kbd>RET</kbd> (enter) or click on the link
`[Update]` in the startup page under the banner then restart Emacs.
If anything goes wrong you should be able to rollback the update by pressing
<kbd>RET</kbd> or clicking on the `[Rollback]` link next to the `[Update]`
link and choose a rollback slot (sorted by date).
# Configuration layers
## Structure
@ -475,49 +521,6 @@ Custom variables configuration from `M-x customize-group` which are
automatically saved by Emacs are stored at the end of your `~/.spacemacs`
file.
# Using the package list buffer
The package list buffer is where you can selectively update one or all
packages installed in your configuration as well as browse for all
available packages in the different Elpa repositories.
`Spacemacs` replaces the default package list buffer with [Paradox][].
Paradox enhances the package list buffer with better feedbacks, new
filters and Github information like the number of stars. Optionally you
can also star packages directly in the buffer.
**Important Note** Don't install new packages from the package list
buffer. If those packages are not referenced in a configuration layer
then `Spacemacs` will treat them as orphans during the next start of
Emacs and they will be deleted.
**Important Note** Don't upgrade your packages via `Paradox` or
`package-list-packages` because they don't support the rollback feature of
Spacemacs.
Key Binding | Description
---------------------|------------------------------------------------------------
<kbd>/</kbd> | evil-search
<kbd>f k</kbd> | filter by keywords
<kbd>f r</kbd> | filter by regexp
<kbd>f u</kbd> | display only installed package with updates available
<kbd>h</kbd> | go left
<kbd>H</kbd> | show help (not accurate)
<kbd>j</kbd> | go down
<kbd>k</kbd> | go up
<kbd>l</kbd> | go right
<kbd>L</kbd> | show last commits
<kbd>n</kbd> | next search occurrence
<kbd>N</kbd> | previous search occurrence
<kbd>o</kbd> | open package homepage
<kbd>r</kbd> | refresh
<kbd>S P</kbd> | sort by package name
<kbd>S S</kbd> | sort by status (installed, available, etc...)
<kbd>S *</kbd> | sort by Github stars
<kbd>v</kbd> | `visual state`
<kbd>V</kbd> | `visual-line state`
<kbd>x</kbd> | execute (action flags)
# Main principles
## Evil
@ -646,7 +649,27 @@ your `~/.spacemacs`):
[evil-jumper][] | jump list emulation
[NeoTree][neotree] | mimic [NERD Tree][nerdtree]
# Color themes
# Spacemacs UI
`Spacemacs` has unique UI elements to make the Emacs experience even
more enjoyable:
- dedicated startup page with a mode aimed at easily managing `Spacemacs`
- dedicated helm source via `helm-spacemacs`
- a [guide-key][] buffer
## Graphical UI
`Spacemacs` has a minimalistic and distraction free graphical UI:
- custom [powerline][powerline] mode-line
[with color feedback](#flycheck-integration) according to current
[Flycheck][flycheck] status
- unicode symbols for minor mode lighters which appear in the mode-line
- [custom fringe bitmaps](#errors-handling) and error feedbacks for
[Flycheck][flycheck]
- [custom fringe bitmaps](../contrib/git/README.md#git-gutter-bitmaps) for
git gutter (available in [git layer][])
### Color themes
By default, `Spacemacs` uses the theme [solarized-light][solarized-theme].
@ -669,167 +692,7 @@ should be pretty rare.
**Hint** If you are an `Org` user, [leuven-theme][] is amazing ;-)
# UI elements
`Spacemacs` has a minimalistic and distraction free UI with a lot of subtle
customization which make it unique compared to other kits:
- beautiful custom [powerline][powerline] mode-line
[with color feedback](#flycheck-integration) according to current
[Flycheck][flycheck]
status
- unicode symbols for minor mode lighters which appear in the mode-line
- [custom fringe bitmaps](#errors-handling) and error feedbacks for
[Flycheck][flycheck]
- [custom fringe bitmaps](../contrib/git/README.md#git-gutter-bitmaps) for [git gutter][]
- dedicated startup page with a mode aimed at easily managing `Spacemacs`
## Toggles
Some UI indicators can be toggled on and off (toggles start with `t`):
Key Binding | Description
----------------------|------------------------------------------------------------
<kbd>SPC t 8</kbd> | display a mark on the 80th column
<kbd>SPC t F</kbd> | toggle frame fullscreen
<kbd>SPC t f</kbd> | toggle display of the fringe
<kbd>SPC t h</kbd> | toggle highlight of the current line
<kbd>SPC t i</kbd> | toggle aggressive indent
<kbd>SPC t l</kbd> | toggle truncate lines
<kbd>SPC t L</kbd> | toggle visual lines
<kbd>SPC t M</kbd> | toggle frame maximize
<kbd>SPC t n</kbd> | show the absolute line numbers
<kbd>SPC t t</kbd> | toggle frame transparency
<kbd>SPC t T</kbd> | toggle tool bar
<kbd>SPC t U</kbd> | toggle menu bar
## Mode-line
The mode line is an heavily customized [powerline][powerline] with the
following capabilities:
- show the window number
- color code for current state
- show the number of search occurrences via anzu
- toggle flycheck info
- toggle battery info
- toggle minor mode lighters
Reminder of the color codes for the states:
Evil State | Color
-------------------|------------------
Normal | Orange
Insert | Green
Visual | Grey
Emacs | Blue
Motion | Purple
Lisp | Pink
Iedit/Iedit-Insert | Red
Some elements can be dynamically toggled:
Key Binding | Description
-----------------------|------------------------------------------------------------
<kbd>SPC t m m</kbd> | toggle the minor mode lighters
<kbd>SPC t m b</kbd> | toggle the battery status
<kbd>SPC t m f</kbd> | toggle the flycheck info
<kbd>SPC t m v</kbd> | toggle the new version lighter
### Flycheck integration
When [Flycheck][flycheck] minor mode is enabled, a new element appears showing
the number of errors, warnings and info.
![powerline-wave](img/powerline-wave.png)
### Anzu integration
[Anzu][anzu] shows the number of occurrence when performing a search. `Spacemacs`
integrates nicely the Anzu status by displaying it temporarily when `n` or `N` are
being pressed. See the `5/6` segment on the screenshot below.
![powerline-anzu](img/powerline-anzu.png)
### Battery status integration
[fancy-battery][] displays the percentage of total charge of the battery as
well as the time remaining to charge or discharge completely the battery.
A color code is used for the battery status:
Battery State | Color
------------------|------------------
Charging | Green
Discharging | Orange
Critical | Red
Note the these colors may vary depending on your theme.
### Powerline separators
It is possible to easily customize the `powerline separator` by setting the
`powerline-default-separator` variable in your `~./spacemacs`. For instance
if you want to set back the separator to the well-known `arrow` separator
add the following snippet to your configuration file:
```elisp
(defun dotspacemacs/config ()
"This is were you can ultimately override default Spacemacs configuration.
This function is called at the very end of Spacemacs initialization."
(setq powerline-default-separator 'arrow)
)
```
To save you the time to try all the possible separators provided by the
powerline, here is an exhaustive set of screenshots:
Separator | Screenshot
------------------|------------------------------------------------------------
`alternate` | ![powerline-alternate](img/powerline-alternate.png)
`arrow` | ![powerline-arrow](img/powerline-arrow.png)
`arrow-fade` | ![powerline-arrow-fade](img/powerline-arrow-fade.png)
`bar` | ![powerline-bar](img/powerline-bar.png)
`box` | ![powerline-box](img/powerline-box.png)
`brace` | ![powerline-brace](img/powerline-brace.png)
`butt` | ![powerline-butt](img/powerline-butt.png)
`chamfer` | ![powerline-chamfer](img/powerline-chamfer.png)
`contour` | ![powerline-contour](img/powerline-contour.png)
`curve` | ![powerline-curve](img/powerline-curve.png)
`rounded` | ![powerline-rounded](img/powerline-rounded.png)
`roundstub` | ![powerline-roundstub](img/powerline-roundstub.png)
`slant` | ![powerline-slant](img/powerline-slant.png)
`wave` | ![powerline-wave](img/powerline-wave.png)
`zigzag` | ![powerline-zigzag](img/powerline-zigzag.png)
`nil` | ![powerline-nil](img/powerline-nil.png)
### Minor Modes
`Spacemacs` uses [diminish][diminish] mode to reduce the size of minor mode
indicators:
The minor mode area can be toggled on and off with:
<SPC> t m m
Unicode symbols are displayed by default. Setting the variable
`dotspacemacs-mode-line-unicode-symbols` to `nil` in your `~/.spacemacs` will
display ASCII characters instead (may be useful in terminal).
Unicode | ASCII | Mode
:-----------:|:----------:|----------------------------------------------------
`⊞` | G | [golden-ratio][golden-ratio] mode
`Ⓐ` | A | [auto-complete][auto-complete] mode
`Ⓒ` | C | [centered-cursor][centered-cursor] mode
`Ⓔ` | E | [evil-org][evil-org-mode] mode
`Ⓕ` | F | flycheck mode
`Ⓚ` | K | guide-key mode
`Ⓘ` | I | aggressive indent mode
`(Ⓟ)` | (P) | paredit mode
`Ⓢ` | S | flyspell mode
`(Ⓢ)` | (S) | [smartparens][sp] mode
`Ⓦ` | W | whitespace mode
`Ⓨ` | Y | [yasnippet][yasnippet] mode
# Font
### Font
The default font used by `Spacemacs` is [source code pro][] by Adobe. It is
recommended to install it on your system.
@ -894,16 +757,164 @@ _Ugly separators_
![ugly-separators](img/crappy-powerline-separators.png)
### Graphical UI Toggles
Some graphical UI indicators can be toggled on and off (toggles start with `t`):
Key Binding | Description
----------------------|------------------------------------------------------------
<kbd>SPC t 8</kbd> | display a mark on the 80th column
<kbd>SPC t F</kbd> | toggle frame fullscreen
<kbd>SPC t f</kbd> | toggle display of the fringe
<kbd>SPC t h</kbd> | toggle highlight of the current line
<kbd>SPC t i</kbd> | toggle aggressive indent
<kbd>SPC t l</kbd> | toggle truncate lines
<kbd>SPC t L</kbd> | toggle visual lines
<kbd>SPC t M</kbd> | toggle frame maximize
<kbd>SPC t n</kbd> | show the absolute line numbers
<kbd>SPC t t</kbd> | toggle frame transparency
<kbd>SPC t T</kbd> | toggle tool bar
<kbd>SPC t U</kbd> | toggle menu bar
**Note** These toggles are all available via the `helm-spacemacs` interface
(press <kbd>SPC fe h</kbd> to display the `helm-spacemacs` buffer).
### Mode-line
The mode line is an heavily customized [powerline][powerline] with the
following capabilities:
- show the window number
- color code for current state
- show the number of search occurrences via anzu
- toggle flycheck info
- toggle battery info
- toggle minor mode lighters
Reminder of the color codes for the states:
Evil State | Color
-------------------|------------------
Normal | Orange
Insert | Green
Visual | Grey
Emacs | Blue
Motion | Purple
Lisp | Pink
Iedit/Iedit-Insert | Red
Some elements can be dynamically toggled:
Key Binding | Description
-----------------------|------------------------------------------------------------
<kbd>SPC t m m</kbd> | toggle the minor mode lighters
<kbd>SPC t m b</kbd> | toggle the battery status
<kbd>SPC t m f</kbd> | toggle the flycheck info
<kbd>SPC t m v</kbd> | toggle the new version lighter
#### Flycheck integration
When [Flycheck][flycheck] minor mode is enabled, a new element appears showing
the number of errors, warnings and info.
![powerline-wave](img/powerline-wave.png)
#### Anzu integration
[Anzu][anzu] shows the number of occurrence when performing a search. `Spacemacs`
integrates nicely the Anzu status by displaying it temporarily when `n` or `N` are
being pressed. See the `5/6` segment on the screenshot below.
![powerline-anzu](img/powerline-anzu.png)
#### Battery status integration
[fancy-battery][] displays the percentage of total charge of the battery as
well as the time remaining to charge or discharge completely the battery.
A color code is used for the battery status:
Battery State | Color
------------------|------------------
Charging | Green
Discharging | Orange
Critical | Red
Note the these colors may vary depending on your theme.
#### Powerline separators
It is possible to easily customize the `powerline separator` by setting the
`powerline-default-separator` variable in your `~./spacemacs`. For instance
if you want to set back the separator to the well-known `arrow` separator
add the following snippet to your configuration file:
```elisp
(defun dotspacemacs/config ()
"This is were you can ultimately override default Spacemacs configuration.
This function is called at the very end of Spacemacs initialization."
(setq powerline-default-separator 'arrow)
)
```
To save you the time to try all the possible separators provided by the
powerline, here is an exhaustive set of screenshots:
Separator | Screenshot
------------------|------------------------------------------------------------
`alternate` | ![powerline-alternate](img/powerline-alternate.png)
`arrow` | ![powerline-arrow](img/powerline-arrow.png)
`arrow-fade` | ![powerline-arrow-fade](img/powerline-arrow-fade.png)
`bar` | ![powerline-bar](img/powerline-bar.png)
`box` | ![powerline-box](img/powerline-box.png)
`brace` | ![powerline-brace](img/powerline-brace.png)
`butt` | ![powerline-butt](img/powerline-butt.png)
`chamfer` | ![powerline-chamfer](img/powerline-chamfer.png)
`contour` | ![powerline-contour](img/powerline-contour.png)
`curve` | ![powerline-curve](img/powerline-curve.png)
`rounded` | ![powerline-rounded](img/powerline-rounded.png)
`roundstub` | ![powerline-roundstub](img/powerline-roundstub.png)
`slant` | ![powerline-slant](img/powerline-slant.png)
`wave` | ![powerline-wave](img/powerline-wave.png)
`zigzag` | ![powerline-zigzag](img/powerline-zigzag.png)
`nil` | ![powerline-nil](img/powerline-nil.png)
#### Minor Modes
`Spacemacs` uses [diminish][diminish] mode to reduce the size of minor mode
indicators:
The minor mode area can be toggled on and off with:
<SPC> t m m
Unicode symbols are displayed by default. Setting the variable
`dotspacemacs-mode-line-unicode-symbols` to `nil` in your `~/.spacemacs` will
display ASCII characters instead (may be useful in terminal).
Unicode | ASCII | Mode
:-----------:|:----------:|----------------------------------------------------
`⊞` | G | [golden-ratio][golden-ratio] mode
`Ⓐ` | A | [auto-complete][auto-complete] mode
`Ⓒ` | C | [centered-cursor][centered-cursor] mode
`Ⓔ` | E | [evil-org][evil-org-mode] mode
`Ⓕ` | F | flycheck mode
`Ⓚ` | K | guide-key mode
`Ⓘ` | I | aggressive indent mode
`(Ⓟ)` | (P) | paredit mode
`Ⓢ` | S | flyspell mode
`(Ⓢ)` | (S) | [smartparens][sp] mode
`Ⓦ` | W | whitespace mode
`Ⓨ` | Y | [yasnippet][yasnippet] mode
# Commands
Every sequences must be performed in `normal` mode.
## Vim key bindings
## Reserved prefix command for user
`Spacemacs` is based on `Vim` modal user interface to navigate and edit text.
If you are not familiar with the `Vim` way of editing text you can try the
[evil tutor][] lessons by pressing <kbd>SPC h T</kbd> at any time.
<kbd>SPC o</kbd> is reserved for the user. Setting key bindings behind `<SPC> o`
is **guaranteed** to never conflict with `Spacemacs` defaults key bindings.
## Escaping
### Escaping
`Spacemacs` uses [evil-escape][] to easily switch between `insert state` and
`normal state` by quickly pressing the `fd` keys.
@ -936,7 +947,7 @@ to `jj` (it is important set the variable in `dotspacemacs/init`):
sequences are not optimal for `Spacemacs`. Indeed it is very easy in
`visual state` to press quickly `jj` and inadvertently escape to `normal state`.
## Executing Vim, Emacs and shell commands
### Executing Vim and Emacs ex/M-x commands
Command | Key Binding
:---------------:|------------------------------------------------------------------
@ -948,6 +959,19 @@ The command key `:` can be easily changed with the variable
`:` and `SPC :` bindings to keep the symmetry between Vim and Emacs. A good
key can be `,` for example.
### Leader key
On top of `Vim` modes (modes are called states in `Spacemacs`) there is a
special key called the leader key which once pressed gives a whole new
keyboard layer. The leader key is by default <kbd>SPC</kbd> (space).
It is possible to change this key with the variable `dotspacemacs-leader-key`.
## Reserved prefix command for user
<kbd>SPC o</kbd> is reserved for the user. Setting key bindings behind
`<SPC> o` is **guaranteed** to never conflict with `Spacemacs` defaults key
bindings.
## Helm
`Spacemacs` is powered by [Helm][helm-link] which is an incremental completion
@ -995,6 +1019,93 @@ Key Binding | Description
<kbd>v</kbd> | execute persistent action
Any other key | leave the micro-state
## Discovering
### Key bindings
An help buffer is displayed each time the <kbd>SPC</kbd> key is pressed in
normal mode. It lists the available key bindings and their associated
commands.
By default the [guide-key][] buffer will be displayed quickly after the key
has been pressed. You can change the delay by setting the variable
`dotspacemacs-guide-key-delay` to your liking (the value is in second).
### Available layers
All layers can be easily discovered via `helm-spacemacs` accessible with
<kbd>SPC f e h</kbd>.
The following helm actions are available:
- default: open the layer `README.md`
- 2nd: open the layer `packages.el`
- 3nd: open the layer `extensions.el`
#### Available packages in Spacemacs
`helm-spacemacs` also lists all the packages available in `Spacemacs`.
The entry format is `(layer) packages`. If you type `flycheck` you'll
be able to see all the layers where `flycheck` is used.
The following helm actions are available on packages:
- default: go the package init function
#### New packages from ELPA repositories
`package-list-packages` is where you can browse for all available packages
in the different Elpa repositories. It is possible to upgrade packages
from there but it is not recommended, use the `[Update]` link on the
`Spacemacs` startup page instead.
`Spacemacs` proposes to use [Paradox][] instead of `package-list-packages`
to list available ELPA packages.
Paradox enhances the package list buffer with better feedbacks, new
filters and Github information like the number of stars. Optionally you
can also star packages directly in the buffer.
**Important Note 1** Installing a new package from `Paradox` won't make it
persistent. To install a package persistently you have to add it explicitly
to a configuration layer.
**Important Note 2** Don't _update_ your packages from `Paradox` or
`package-list-packages` because they don't support the rollback feature of
Spacemacs.
Key Binding | Description
---------------------|------------------------------------------------------------
<kbd>/</kbd> | evil-search
<kbd>f k</kbd> | filter by keywords
<kbd>f r</kbd> | filter by regexp
<kbd>f u</kbd> | display only installed package with updates available
<kbd>h</kbd> | go left
<kbd>H</kbd> | show help (not accurate)
<kbd>j</kbd> | go down
<kbd>k</kbd> | go up
<kbd>l</kbd> | go right
<kbd>L</kbd> | show last commits
<kbd>n</kbd> | next search occurrence
<kbd>N</kbd> | previous search occurrence
<kbd>o</kbd> | open package homepage
<kbd>r</kbd> | refresh
<kbd>S P</kbd> | sort by package name
<kbd>S S</kbd> | sort by status (installed, available, etc...)
<kbd>S *</kbd> | sort by Github stars
<kbd>v</kbd> | `visual state`
<kbd>V</kbd> | `visual-line state`
<kbd>x</kbd> | execute (action flags)
### Toggles
`helm-spacemacs` is also a central place to discover the available toggles.
To display only the toggles source press <kbd>C-l</kbd> (or in
[Helm micro-state](#helm-micro-state) you can press just <kbd>l</kbd>).
The following helm actions are available on packages:
- default: toggle on/off
**Tips** Use <kbd>SPC h l</kbd> to resume the last helm session. It is
handy to quickly toggle on and off a toggle.
## Navigating
### Point/Cursor
@ -1848,7 +1959,7 @@ Key Binding | Function
<kbd>SPC m t b</kbd> | execute buffer tests
<kbd>SPC m t q</kbd> | ask for test function to execute
## Project management
### Managing projects
Projects in `Spacemacs` are managed with [projectile][projectile]. In
`projectile` projects are defined implicitly, for instance the root of a
@ -2117,6 +2228,7 @@ piece of software.
Thank you to all the contributors and the whole Emacs community from core
developers to elisp hackers!
[CONVENTIONS.md]: ./CONVENTIONS.md
[evil]: https://gitorious.org/evil/pages/Home
[evil-leader]: https://github.com/cofi/evil-leader
[RSI]: http://en.wikipedia.org/wiki/Repetitive_strain_injury