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
- CSS / LESS / SASS / SCSS
- HAML / Markdown / Textile / ERB
- Clojure (via nrepl)
- Common Lisp (with Slime)
- A full gnus setup, easy to use (look at ~/.gnus after make install)
- A simple OfflineIMAP configuration (look at ~/.offlineimaprc and ~/.offineimap.py after make install)
- Please set the pgg-default-keyserver-address variable!
- Do not panic if you cannot send mails! Use F1+s for it!
- A simple ERC setup for using IRC
- A simple GTD implementation
- A full setup for EMMS, including a script to access EMMS without an open Emacs frame
- Includes a setup for the music player demon
- File sharing
- A simple setup for rtorrent
- You can fully use it without a running X server!
- Emacs 23 or greater (note that Emacs 24 is required for some functionality, and will likely become the minimum required version some time soon.)
- 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
git clone https://github.com/purcell/emacs.d.git ~/.emacs.d
Then change into it and do:
To install all features shipped with this repository simply do afterwards:
If you want to know what features are available use the
print-targets.sh script to inform yourself.
Upon starting up Emacs for the first time, further third-party packages will be automatically downloaded and installed.
If you like to use EMMS you have to specify the player you want to use.
; in custom.el place: (setq emms-player-list '(emms-player-mplayer)) ; if you use mplayer (setq emms-player-list '(emms-player-mpd)) ; if you use mpd
To uninstall things that have been installed with this Repository and are specific for Emacs:
To uninstall everything that have been installed with this Repository:
Important note about
This config enables
ido-mode completion in the minibuffer wherever
possible, which might confuse you when trying to open files using
C-x C-f, e.g. when you want to open a directory to use
dired -- if you get stuck, use C-f to drop into the
find-file prompt. (You might want to customize the
ido-show-dot-for-dired variable if this is an issue for you.)
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.
Adding your own customization
To add your own customization, use M-x customize and/or
create a file
~/.emacs.d/lisp/init-local.el which looks like this:
```el ... your code here ...
(provide 'init-local) ```
Alternatively, fork the repo and hack away at the config to make it your own!
If you need initialisation code which executes earlier in the startup process,
you can also create an
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!
For key bindings look at the
You might also want to check out
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.