A community-driven Emacs distribution - The best editor is neither Emacs nor Vim, it's Emacs *and* Vim!
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.
Find a file
2015-01-26 01:16:46 -05:00
contrib Add alchemist.el logo 2015-01-26 01:16:46 -05:00
core Set layer variables before loading the layers config.el 2015-01-25 23:40:44 -05:00
doc Update DOCUMENTATION.md to fix key binding for helm buffer theme selection 2015-01-25 23:44:19 -05:00
private Fix conf_layers link in private README 2015-01-13 23:27:10 -05:00
spacemacs Disable hack for powerline height issue 2015-01-24 19:29:29 -05:00
travis Travis: Add symbolic link from local spacemacs repository to ~/.emacs.d 2015-01-22 23:16:35 -05:00
.gitignore Add a emacs-ycmd contrib layer. 2015-01-11 23:15:13 -05:00
.gitmodules
.projectile
.travis.yml Add travis directory with run_build.sh script 2015-01-22 23:02:41 -05:00
init.el Bump version to 0.49.0 2015-01-25 23:48:24 -05:00
README.md Minor format fix in README FAQ 2015-01-26 00:13:27 -05:00


title philosophy | goals | for who? | screenshots | documentation | contribute | achievements | FAQ


Build Status ![Gitter](https://badges.gitter.im/Join Chat.svg)Twitter


Quick Install:

git clone --recursive http://github.com/syl20bnr/spacemacs ~/.emacs.d

Table of Contents

Introduction

Spacemacs is a user-friendly and well-documented Emacs kit that integrates the best Emacs packages out there. It uses Evil Mode to combine the ergonomic editing features of Vim with the extensibility of Emacs.

Spacemacs is designed to be approachable to users coming from Vim--you do not need any prior experience with Emacs to get started.

If you are already an experienced Emacs user, you will appreciate the clean customization system and tight integration of the included packages.

Spacemacs is currently in beta, and contributions are welcome.

Features

Batteries Included

Spacemacs integrates hundreds of packages and is ready to use with no additional configuration. It provides excellent support for many languages, including the following:

It also comes with Git support and project management tools. All these features are loaded on-demand to keep startup time short.

The Spacemacs community provides additional configurations that extend the default distribution.

Visit the Documentation

Nice UI

Spacemacs looks good. It comes with high-quality themes and a custom low-clutter modeline.

spacemacs_python

Excellent Evil Support

Spacemacs is designed around Vim keyboard bindings, provided by Evil Mode. The packages distributed with Spacemacs are customized to integrate seamlessly with Evil.

Spacemacs improves upon Vim by using task-specific states to group related commands. These states reduce the keystrokes needed to issue repetitive commands and reduce the number of keyboard bindings to learn.

Convenient and Mnemonic Key Bindings

Spacemacs organizes key bindings into mnemonic groups. For example, commands to operate on the buffer are prefixed by <SPC> b, and commands to operate on the project are under <SPC> p.

There is no need to learn convoluted Emacs key chords--Spacemacs uses memorable bindings that are easy to type.

Great Documentation

Most of Spacemacs' features are extensively documented, along with key bindings and configuration options.

If you need help, ask your question in the Gitter Chat and a member of the community will help you out.

Prerequisites

Emacs version

Spacemacs is tested with Emacs 24.3 and 24.4. It should boot on all the major OSes where these versions can be installed.

Some modes require third-party tools that you'll have to install via your favorite package manager.

OS X

The recommended version for OS X is emacs-mac-port. It can be installed from homebrew with the following commands:

$ brew tap railwaycat/emacsmacport
$ brew install emacs-mac

The default key handling is different from the official OS X port. To correct this you can add the osx layer to your dotfile layer list:

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

Note that the emacs-mac-port server behaves differently than the regular Emacs server. Details can be found on the emacs-mac-port README.

Install

  1. If you have an existing Emacs configuration, back it up:

    cd ~
    mv .emacs.d .emacs.bak
    
  2. Clone this repository with its submodules:

    git clone --recursive http://github.com/syl20bnr/spacemacs ~/.emacs.d
    

    master is the stable branch and is regularly updated. Switch to the develop branch if you want to use the bleeding-edge version.

  3. Launch Emacs. Spacemacs will automatically install the packages it requires.

  4. Restart Emacs to complete the installation.

See the troubleshooting guide if you have any issues.

Update

Spacemacs currently requires manual updates using the following procedure:

  1. Update Emacs packages.
  2. Open the package list using <SPC> a P or M-x paradox-list-packages
  3. Mark all packages for updating by pressing U, and
  4. install them with x.

See the documentation for more information about how to use the package list.

  1. Close Emacs and update the git repository:

    git pull --rebase
    git submodule sync; git submodule update
    
  2. Restart Emacs to complete the upgrade.

Update notification

For convenience an indicator is displayed in the mode-line whenever a new version of Spacemacs is available.

       Symbol                     | Description

:------------------------------------:|---------------------------------- git-new | less than 3 releases behind git-del | less than 5 releases behind git-mod | 5 or more releases behind

Note: Update of Spacemacs by clicking on the indicator will be implemented soon.

Configuration

Spacemacs divides its configuration into self-contained units called configuration layers. These layers can be stacked on top of each other to achieve a custom configuration.

Spacemacs also uses a dotfile ~/.spacemacs to control which layers to load and to quick configure some Spacemacs features.

Configuration layers

A configuration layer is a directory containing at least the following files:

  • packages.el: Defines and configures packages to be downloaded from Emacs package repositories using package.el
  • extensions.el: Configures packages which cannot be downloaded with package.el such as built-in Emacs features and git submodules.

If you already have your own Emacs configuration you can move it to your own layer. The following command creates a layer in the private directory:

<SPC> : configuration-layer/create-layer RET

Any configuration layers you create must be explicitly loaded in your ~/.spacemacs file.

Note: For your privacy, the contents of the private directory are not under source control. See the documentation for a discussion on how to manage your private configuration.

Dotfile (.spacemacs)

The .spacemacs file controls which configuration layers to load and provides a way to customize Spacemacs.

The following command will create a .spacemacs file in your home directory:

<SPC> : dotspacemacs/install RET

To open the installed dotfile:

<SPC> f e d

Example to load some configuration layers using the variable dotspacemacs-configuration-layers:

;; List of configuration layers to load.
dotspacemacs-configuration-layers '(company-mode smex)

Some configuration layers have configuration variables to enable specific support. For instance the git layer has several configuration variables, they can be set directly in the dotspacemacs-configuration-layers like this:

;; List of configuration layers to load.
dotspacemacs-configuration-layers '(company-mode
                                    (git :variables
                                         git-magit-status-fullscreen t
                                         git-enable-github-support t
                                         git-gutter-use-fringe t)
                                    smex)

The comments in this file contain further information about how to customize Spacemacs. See the dotfile configuration section of the documentation for more information.

Learning Spacemacs

Evil-tutor

Press SPC h T to start the Vimtutor adapted for Evil.

The leader key

Spacemacs key bindings use a leader key which is set by default to SPC key (space bar).

You can change it easily by setting the variable dotspacemacs-leader-key in your ~/.spacemacs file.

Universal argument

In spacemacs the universal argument is by default on <SPC> u instead of C-u which is used to scroll up as in Vim.

Configuration layers and Packages discovery

By using helm-spacemacs with SPC f e h you can quickly search for a package and get the name of the layers using it.

You can also easily go to the README.md of a layer or go to the initialization function of a package.

Key bindings discovery

Thanks to guide-key, whenever a prefix command is pressed (like <SPC>) a buffer appears after one second listing the possible keys for this prefix.

It is also possible to search for specific key bindings by pressing:

<SPC> ?

To narrow the list to Spacemacs key bindings starting with prefix <SPC>, set the pattern to something like the regular expression:

SPC\ b

The example above will list all the buffer related bindings.

Describe functions

Describe functions are powerful Emacs introspection commands to get information about functions, variables, modes and so on.

These functions are accessible with the following bindings:

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

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 first.

FAQ

Common

  1. Which version of Spacemacs am I running ? The version is displayed on the upper right corner of the loading screen. It is also possible to display the version with SPC f e v.

  2. Why installed packages with package-install are automatically deleted by Spacemacs when it starts ? To declare new packages you have to create a new configuration layer, see the quick start guide here.

  3. The Spacemacs banner is ugly, what should I do ? Install the default font supported by Spacemacs or choose a fixed witdh font. More information in the font section of the documentation.

  4. Why the powerline has no arrows in terminal even with a patched font ? Emacs powerline implementation does not use patched fonts. There exist currently no mode-lines in Emacs that support patched font. The corresponding feature request for the powerline can be found here.

  5. The powerline separators have no anti-aliasing, what can I do ? Emacs powerline uses XMP images to draw the separators. Enabling anti-aliasing may not be a trivial task so unfortunately you'll have to live with it. Nevertheless it exists a large number of different separators and you can try to setup a different one with less aliasing (arrows for instance), alternatively you can disable them (note that the tilde characters on buffer empty lines have the same limitations).

Windows

  1. Why the fonts on Windows looks so crappy ? You can install MacType on Windows to get very nice looking fonts. It is also recommended to disable the smooth scrolling on Windows.

  2. How to fix the error: The directory ~/.emacs.d/server is unsafe ? Change the owner of the directory ~/.emacs.d/server:

  • from Properties select the Tab “Security”,
  • select the button “Advanced”,
  • select the Tab “Owner”
  • change the owner to your account name Source: Stackoverflow

OS X

  1. Why the powerline colors are not correct on OS X ? This is a known issue as of Emacs 24.4 due to ns-use-srgb-colorspace defaulting to true. It is recommended to use the emacs-mac-port build. See the install OSX section for more info on this.