An Emacs configuration bundle with batteries included

Subscribe to updates I use emacs.d

Statistics on emacs.d

Number of watchers on Github 4119
Number of open issues 6
Average time to close an issue 4 days
Main language Emacs Lisp
Average time to merge a PR about 16 hours
Open pull requests 2+
Closed pull requests 59+
Last commit 4 months ago
Repo Created over 9 years ago
Repo Last Updated 4 months ago
Size 9.73 MB
Organization / Authorpurcell
Page Updated
Do you use emacs.d? Leave a review!
View open issues (6)
View emacs.d activity
View on github
Latest Open Source Launches
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating emacs.d for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Build Status Support me

A reasonable Emacs config

This is my emacs configuration tree, continually used and tweaked since 2000, and it may be a good starting point for other Emacs users, especially those who are web developers. These days it's somewhat geared towards OS X, but it is known to also work on Linux and Windows.

Emacs itself comes with support for many programming languages. This config adds improved defaults and extended support for the following:

  • Ruby / Ruby on Rails
  • HAML / Markdown / Textile / ERB
  • Clojure (with Cider and nRepl)
  • Javascript / Coffeescript
  • Python
  • PHP
  • Haskell
  • Elm
  • Erlang
  • Common Lisp (with Slime)

In particular, there's a nice config for autocompletion with company, and flycheck is used to immediately highlight syntax errors in Ruby, Python, Javascript, Haskell and a number of other languages.

Supported Emacs versions

The config should run on Emacs 24.3 or greater and is designed to degrade smoothly - see the Travis build - but note that Emacs 24.5 and above is required for an increasing number of key packages, so to get full functionality you should use the latest Emacs version available to you.

Some Windows users might need to follow these instructions to get TLS (ie. SSL) support included in their Emacs.

Other requirements

To make the most of the programming language-specific support in this config, further programs will likely be required, particularly those that flycheck uses to provide on-the-fly syntax checking.


To install, clone this repo to ~/.emacs.d, i.e. ensure that the init.el contained in this repo ends up at ~/.emacs.d/init.el:

git clone https://github.com/purcell/emacs.d.git ~/.emacs.d

Upon starting up Emacs for the first time, further third-party packages will be automatically downloaded and installed. If you encounter any errors at that stage, try restarting Emacs, and possibly running M-x package-refresh-contents before doing so.


Update the config with git pull. You'll probably also want/need to update the third-party packages regularly too:

M-x package-list-packages, then U followed by x.

You should usually restart Emacs after pulling changes or updating packages so that they can take effect. Emacs should usually restore your working buffers when you restart due to this configuration's use of the desktop and session packages.

Changing themes and adding your own customization

To add your own customization, use M-x customize, M-x customize-themes etc. and/or create a file ~/.emacs.d/lisp/init-local.el which looks like this:

... your code here ...

(provide 'init-local)

If you need initialisation code which executes earlier in the startup process, you can also create an ~/.emacs.d/lisp/init-preload-local.el file.

If you plan to customize things more extensively, you should probably just fork the repo and hack away at the config to make it your own! Remember to regularly merge in changes from this repo, so that your config remains compatible with the latest package and Emacs versions.

Please note that I cannot provide support for customised versions of this configuration.

Similar configs

You might also want to check out emacs-starter-kit and prelude.

Support / issues

If you hit any problems, please first ensure that you are using the latest version of this code, and that you have updated your packages to the most recent available versions (see Updates above). If you still experience problems, go ahead and file an issue on the github project.

-Steve Purcell

Support this project and my other Open Source work



emacs.d open issues Ask a question     (View All Issues)
  • over 1 year c++-mode can't be typed in via M-x
  • almost 2 years CIDER version
  • almost 2 years flycheck checker always complain
  • almost 2 years Company autocompletion unpredictable in terminal
  • about 2 years Settings ibuffer name column width.
  • over 2 years How to customize emacs.d?
  • over 2 years default-input-method is overridden
  • over 2 years error: Package `fullframe-' is unavailable
  • about 3 years Bootstrap from behind proxy
  • over 3 years erb-html mode and flycheck
emacs.d open pull requests (View All Pulls)
  • fix "Wrong number of arguments"
  • [WIP] Configure flycheck-rust and racer packages
emacs.d questions on Stackoverflow (View All Questions)
  • .emacs.d folder equivalent for eclipse
  • Disable warning about emacs.d in load path
  • when i use my emacs with purcell's .emacs.d ,i can't use slime
  • Cannot open load file error when pulling .emacs.d from version control using ELPA
  • Does .emacs.d belong to load-path?
  • .emacs.d: should I version control the archive-contents files under elpa/archives?
  • What combination of python-mode, ipython, (ipython.el) versions/releases and init.el/.emacs.d code work?
  • How to set the Emacs title bar like "plugin.el@~/.emacs.d/plugin/"
  • Let .emacs.d behaves just like a .d folder
  • ELPA/Marmalade reports "cannot open load file" for ~/.emacs.d/elpa/archives/-pkg
  • How to run a emacs without loading `.emacs` nor `.emacs.d`?
  • How to fix this error? emacs.d/starter-kit.el: `flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'
  • Emacs not recognising .emacs.d folder on startup
  • How to run the Clojure REPL from Emacs after setting up .emacs.d folder
  • emacs trips over make-directory: File exists: c:/Users/USER/My Documents/.emacs.d/
  • Independent emacs installations and locations of the .emacs.d directory and the .emacs file
  • gitignore ignoring .emacs.d even with !.emacs.d exception
  • How do I byte-compile everything in my .emacs.d directory?
  • .emacs.d and site-lisp directory
  • include ~/.emacs.d/emacs-xcode and require 'xcode gives "Cannot open load file, xcode"
  • Deleted /.emacs.d/ and now Emacs won't work properly. How do I recreate/reset Emacs .emacs-folder?
  • Some emacs desktop-save questions: how to change it to save in ~/.emacs.d/.emacs.desktop
emacs.d list of languages used
Other projects in Emacs Lisp