2014-10-13 03:56:29 +00:00
|
|
|
![title](https://raw.githubusercontent.com/syl20bnr/spacemacs/master/doc/title.png)
|
2014-11-20 01:11:25 +00:00
|
|
|
[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/syl20bnr/spacemacs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)[![Twitter][]](http://www.twitter.com/spacemacs)
|
2014-09-21 23:58:53 +00:00
|
|
|
|
2014-11-22 06:31:33 +00:00
|
|
|
[philosophy][] | [goals][] | [for who?][] | [screenshots][] | [achievements][] | [contribute][CONTRIBUTE.md] | [documentation][DOCUMENTATION.md]
|
2013-11-24 04:00:41 +00:00
|
|
|
|
2014-11-24 03:42:31 +00:00
|
|
|
**Quick Install:**
|
|
|
|
|
|
|
|
git clone --recursive http://github.com/syl20bnr/spacemacs ~/.emacs.d
|
|
|
|
|
2014-11-20 01:11:25 +00:00
|
|
|
# Introduction
|
2014-10-16 17:03:17 +00:00
|
|
|
|
|
|
|
`Spacemacs` is a user-friendly and well-documented Emacs Advanced kit.
|
|
|
|
|
2014-10-16 22:21:36 +00:00
|
|
|
`Advanced` means here that it heavily and happily performs non-trivial tweaks
|
|
|
|
and customization in order to make itself easy to use and unique.
|
2014-10-16 17:03:17 +00:00
|
|
|
|
|
|
|
`Advanced` does not mean that you have to be an advanced Emacs user, beginners
|
|
|
|
are welcome and encouraged to use `Spacemacs` since it provides a simple
|
|
|
|
architecture to contribute changes and hack others contributions.
|
|
|
|
|
2014-11-22 06:31:33 +00:00
|
|
|
Its status is `beta` for now, essentially because of the configuration system
|
2014-10-16 17:03:17 +00:00
|
|
|
that is not yet finished but already usable.
|
|
|
|
|
2014-10-18 01:55:28 +00:00
|
|
|
And now, to use a well known catch line from [Emacs Live][emacs_live]:
|
2014-10-16 17:03:17 +00:00
|
|
|
|
|
|
|
M-x start-spacing !
|
|
|
|
|
2014-11-22 21:53:38 +00:00
|
|
|
# Features
|
|
|
|
|
|
|
|
### Convenient and Mnemonic Key Bindings
|
|
|
|
|
|
|
|
`Spacemacs` organizes key bindings by mnemonic namespaces. If you are looking
|
|
|
|
for commands to operate on your buffer, they are right under `<SPC> b`, if you
|
|
|
|
want to operate on your project, then it is `<SPC> p`, etc...
|
|
|
|
|
|
|
|
There is no need to learn convoluted Emacs chords, everything you need is under
|
|
|
|
bindings that are easy to type and easy to remember.
|
|
|
|
|
|
|
|
### Excellent Evil Support
|
|
|
|
|
|
|
|
Spacemacs comes with Vim modal editing through [Evil Mode][]. Everything is
|
|
|
|
designed with it in mind from the key bindings to the user interface.
|
|
|
|
This includes fancy goodies like a micro-state for editing all occurences of a
|
|
|
|
symbol and extra packages like [ace-jump][],[evil-lisp-state][] and [evil-nerd-commenter][].
|
|
|
|
|
|
|
|
### Batteries Included
|
|
|
|
|
|
|
|
Comes with configuration for hundreds of packages that make it fantastic out of the
|
|
|
|
box. Many languages like Python, Ruby, Scala, R, SCSS, Elixir and Javascript come with modes,
|
|
|
|
configuration and convenient key bindings. It also comes with [Git support][], [project management][]
|
|
|
|
and auto-completion. And all of this is optimized and lazy-loaded so you still get fast boot times!
|
|
|
|
|
|
|
|
And if that isn't enough you can use [community contributed][contrib layers] configuration
|
|
|
|
layers for nice configurations of packages that aren't in the default distribution.
|
|
|
|
|
|
|
|
### Great [Documentation][DOCUMENTATION.MD]
|
|
|
|
|
|
|
|
Most Spacemacs features come with extensive documentation including key bindings, configuration options and
|
|
|
|
explanations for beginners. And if you can't find the answers you need, ask your question in the [Gitter Chat][] and
|
|
|
|
a member of the community will help you out.
|
|
|
|
|
|
|
|
**[Visit the Documentation][DOCUMENTATION.MD]**
|
|
|
|
|
|
|
|
### Nice UI
|
|
|
|
|
|
|
|
Spacemacs is designed to look nice in a minimal and functional way. It comes with good theme support and a highly customized
|
|
|
|
Powerline. The Powerline includes features like quick window switching numbers, Evil mode colors, and nice mode icons.
|
|
|
|
|
|
|
|
![spacemacs_python](https://raw.githubusercontent.com/syl20bnr/spacemacs/master/doc/spacemacs-python.png)
|
|
|
|
|
2014-11-20 01:11:25 +00:00
|
|
|
# Prerequisites
|
2014-09-27 02:50:30 +00:00
|
|
|
|
2014-10-25 02:47:07 +00:00
|
|
|
`Spacemacs` is tested with Emacs 24.3 and 24.4. It should boot on all the major
|
|
|
|
OSes where these versions can be installed.
|
2013-11-23 05:46:33 +00:00
|
|
|
|
2014-11-25 04:04:43 +00:00
|
|
|
Some modes require third-party tools that you'll have to install via your
|
|
|
|
favorite package manager.
|
|
|
|
|
2014-11-20 01:11:25 +00:00
|
|
|
# Install
|
2013-11-23 05:46:33 +00:00
|
|
|
|
2014-11-13 13:39:08 +00:00
|
|
|
1) Backup your current `~/.emacs.d` and clone the repo _with the submodules_:
|
2014-09-07 03:28:55 +00:00
|
|
|
|
2013-11-23 05:46:33 +00:00
|
|
|
cd ~
|
|
|
|
mv .emacs.d .emacs.bak
|
2014-11-22 05:45:19 +00:00
|
|
|
git clone --recursive http://github.com/syl20bnr/spacemacs ~/.emacs.d
|
2013-11-23 05:46:33 +00:00
|
|
|
|
2014-10-29 14:46:50 +00:00
|
|
|
`master` is a stable branch, if you want the "bleeding edge" checkout the
|
|
|
|
`develop` branch.
|
|
|
|
|
2014-10-18 01:35:43 +00:00
|
|
|
2) Launch Emacs, the first time a bunch of packages will be downloaded and
|
|
|
|
installed. When the package installation is complete restart Emacs and
|
|
|
|
`Spacemacs` should be ready to use.
|
|
|
|
|
2014-11-22 05:45:19 +00:00
|
|
|
In case of failure see [troubleshoot section][troubleshoot] in documentation.
|
|
|
|
|
2014-11-25 04:04:43 +00:00
|
|
|
# Update
|
|
|
|
|
|
|
|
For now the update of `Spacemacs` is manual.
|
|
|
|
|
|
|
|
1) It is important to _first_ update the Emacs packages. In Emacs:
|
|
|
|
|
|
|
|
```
|
|
|
|
<SPC> : package-list-packages RET U x RET
|
|
|
|
```
|
|
|
|
|
|
|
|
When asked for old packages deletion enter `y`.
|
|
|
|
|
|
|
|
2) Close Emacs and update the git repository:
|
|
|
|
|
|
|
|
```sh
|
|
|
|
$ git pull --rebase
|
|
|
|
$ git submodule sync; git submodule update
|
|
|
|
```
|
|
|
|
|
|
|
|
Then restart Emacs.
|
|
|
|
|
2014-11-22 05:45:19 +00:00
|
|
|
# Configuration
|
|
|
|
|
|
|
|
## Configuration layers
|
|
|
|
|
|
|
|
`Spacemacs` is based on [configuration layers][config]. To create your own
|
|
|
|
configuration layer:
|
|
|
|
|
|
|
|
<SPC> : config-system/create-layer RET
|
2014-10-18 01:35:43 +00:00
|
|
|
|
2014-11-22 21:53:38 +00:00
|
|
|
After entering a name, a layer skeleton will be created in the [private][]
|
2014-11-26 03:28:13 +00:00
|
|
|
directory where you'll find the following files:
|
|
|
|
- `packages.el` to list the elpa packages
|
|
|
|
- `exentsions.el` for any other package that is not available in a elpa
|
|
|
|
repository.
|
|
|
|
|
|
|
|
The `private` directory is ignored by Git.
|
2014-10-24 03:12:00 +00:00
|
|
|
|
2014-11-22 05:53:13 +00:00
|
|
|
To use your newly created configuration layer, add it to your `~/.spacemacs`
|
|
|
|
file (see next section).
|
2014-10-18 01:35:43 +00:00
|
|
|
|
2014-11-26 03:28:13 +00:00
|
|
|
Note that this approach leaves your layer not source controlled. To get more
|
|
|
|
info on the different approaches to manage your layers, refer to the
|
|
|
|
[Managing private configuration layers][manage_config] section of the
|
|
|
|
documentation.
|
|
|
|
|
2014-11-22 05:45:19 +00:00
|
|
|
## Dotfile ~/.spacemacs
|
2014-10-18 01:35:43 +00:00
|
|
|
|
2014-11-22 05:53:13 +00:00
|
|
|
`Spacemacs` has a convenient dotfile. You have to install it by invoking the
|
|
|
|
following command inside Emacs:
|
2014-10-18 01:35:43 +00:00
|
|
|
|
2014-11-22 05:45:19 +00:00
|
|
|
<SPC> : dotspacemacs/install RET
|
2014-10-18 01:35:43 +00:00
|
|
|
|
2014-11-22 05:45:19 +00:00
|
|
|
Refers directly to the file `~/.spacemacs` to get documentation or
|
|
|
|
navigate to the [dotfile configuration][dotfile] section of [DOCUMENTATION.md][].
|
2014-10-24 03:12:00 +00:00
|
|
|
|
2014-11-24 03:55:35 +00:00
|
|
|
# Learning Spacemacs
|
2014-10-29 14:02:28 +00:00
|
|
|
|
2014-11-24 03:55:35 +00:00
|
|
|
## Key bindings discovery
|
2014-10-29 14:02:28 +00:00
|
|
|
|
2014-11-24 03:55:35 +00:00
|
|
|
Thanks to [guide-key][], whenever a prefix command is pressed (like `<SPC>`)
|
2014-11-24 03:58:24 +00:00
|
|
|
a buffer appears after one second listing the possible keys for this prefix.
|
2014-10-31 04:42:04 +00:00
|
|
|
|
2014-11-24 03:58:24 +00:00
|
|
|
It is also possible to search for specific key bindings by pressing:
|
2014-10-29 14:02:28 +00:00
|
|
|
|
|
|
|
<SPC> ?
|
|
|
|
|
2014-11-24 03:58:24 +00:00
|
|
|
To narrow the list to `Spacemacs` key bindings starting with prefix `<SPC>`,
|
|
|
|
set the pattern to something like the regular expression:
|
2014-10-29 14:02:28 +00:00
|
|
|
|
2014-11-24 03:55:35 +00:00
|
|
|
`SPC\ b`
|
2014-10-29 14:02:28 +00:00
|
|
|
|
|
|
|
The example above will list all the `buffer` related bindings.
|
|
|
|
|
2014-11-24 03:55:35 +00:00
|
|
|
## Describe functions
|
|
|
|
|
2014-11-24 03:58:24 +00:00
|
|
|
`Describe functions` are powerful Emacs introspection commands to get information
|
2014-11-24 03:55:35 +00:00
|
|
|
about functions, variables, modes and so on.
|
2014-10-29 14:02:28 +00:00
|
|
|
|
2014-11-24 03:55:35 +00:00
|
|
|
These functions are accessible with the following bindings:
|
2014-10-29 14:02:28 +00:00
|
|
|
|
|
|
|
Key Binding | Description
|
|
|
|
--------------|------------------------------------------------------------------
|
|
|
|
`<SPC> h d f` | describe-function
|
|
|
|
`<SPC> h d k` | describe-key
|
|
|
|
`<SPC> h d m` | describe-mode
|
|
|
|
`<SPC> h d v` | describe-variable
|
|
|
|
|
2014-11-24 03:55:35 +00:00
|
|
|
# Contributions
|
|
|
|
|
|
|
|
`Spacemacs` needs you!
|
|
|
|
|
|
|
|
Especially to grow the number of configuration layers, for instance to support new languages.
|
|
|
|
|
|
|
|
If you are ready to contribute please consult the [contribution guidelines][CONTRIBUTE.md]
|
|
|
|
first.
|
|
|
|
|
2014-11-19 04:47:30 +00:00
|
|
|
[Twitter]: http://i.imgur.com/tXSoThF.png
|
2014-11-22 05:45:19 +00:00
|
|
|
[philosophy]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#philosophy
|
|
|
|
[goals]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#goals
|
|
|
|
[for who?]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#who-can-benefit-from-this-
|
|
|
|
[screenshots]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#screenshots
|
|
|
|
[config]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#configuration-layers
|
|
|
|
[dotfile]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#dotfile-configuration
|
2014-11-26 03:28:13 +00:00
|
|
|
[manage_config]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#managing-private-configuration-layers
|
|
|
|
[achievements]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#achievements
|
2014-11-22 05:45:19 +00:00
|
|
|
[troubleshoot]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#troubleshoot
|
2014-11-22 21:53:38 +00:00
|
|
|
[contrib layers]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#using-configuration-layers
|
|
|
|
[Git support]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#working-with-git
|
|
|
|
[ace-jump]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#vim-motions-with-ace-jump-mode
|
|
|
|
[project management]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#project-management
|
|
|
|
[Evil Mode]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md#evil
|
2014-11-22 05:53:13 +00:00
|
|
|
[private]: https://github.com/syl20bnr/spacemacs/tree/master/private
|
2014-11-22 05:45:19 +00:00
|
|
|
[DOCUMENTATION.md]: https://github.com/syl20bnr/spacemacs/blob/master/DOCUMENTATION.md
|
|
|
|
[CONTRIBUTE.md]: https://github.com/syl20bnr/spacemacs/blob/master/CONTRIBUTE.md
|
2014-10-16 17:03:17 +00:00
|
|
|
[emacs_live]: https://github.com/overtone/emacs-live
|
2014-10-31 04:42:04 +00:00
|
|
|
[guide-key]: https://github.com/kai2nenobu/guide-key
|
|
|
|
[guide-key-tip]: https://github.com/aki2o/guide-key-tip
|
2014-11-22 21:53:38 +00:00
|
|
|
[evil-lisp-state]: https://github.com/syl20bnr/evil-lisp-state
|
|
|
|
[evil-nerd-commenter]: https://github.com/redguardtoo/evil-nerd-commenter
|
|
|
|
[Gitter Chat]: https://gitter.im/syl20bnr/spacemacs
|