Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
My emacs configuration, including collected third-party code (much of it as git submodules). For my personal convenience, but you are welcome to borrow from it, and equally welcome to provide any feedback you think I could benefit from.
Emacs Lisp
branch: master
Failed to load latest commit information.
snippets
.gitignore Updating gitignore (projectile cache, recentf)
HIVE-variables.el Tidying up system/platform tweaks
LICENCE Finally add licence file!
README.md Updating the README; don't need post-install notes any more
custom-c.el Remove references to autopair
custom-erc.el Add notification (mentions) to ERC modules
custom-erlang.el Fixing up a bunch of elisp conventions checkdoc whinges about
custom-escreen.el Change current-screen face in escreen advice
custom-eshell.el More cleanup of ido
custom-functions.el More cleanup of ido
custom-general.el Make sure comint is loaded before hooking into it
custom-haskell.el Need to explicitly specify indentation mode
custom-helm.el
custom-js-web.el URL-decode/encode region commands
custom-latex.el Fixing up a bunch of elisp conventions checkdoc whinges about
custom-lisp.el Need to require cider-eval-sexp-fu
custom-org.el Update org customisation
custom-python.el Adding comment for the future about dir-locals requirement for python
custom-stats.el Fixing up a bunch of elisp conventions checkdoc whinges about
custom-vc.el Quieten that magit-upgraded message
custom-xml.el Fixing up a bunch of elisp conventions checkdoc whinges about
darwin.el Fixing up a bunch of elisp conventions checkdoc whinges about
gnu-linux.el Fixing up a bunch of elisp conventions checkdoc whinges about
init.el Add peep-dired
thinkpad-variables.el Removed custom variables sections relating to disabled commands
windows-nt.el Function to not display ^M in dos files

README.md

README

This is my emacs configuration, placed on github for portability and general sharing. It has accumulated a decent amount of cruft over the years, so please feel free to point out where it can be improved.

These days I have a fairly homogenous environment across my different installations, so there's not a lot of effort put in to making things backwards-compatible. Currently that means Emacs24, on a Linux (Ubuntu) host, although the only thing I'm aware of that breaks on Emacs23 is the colour-theme stuff. See also the platform and host-specific loading files if things start to deviate much.

Installation

This should be as simple as cloning from github. If you check out to ~/.emacs.d then you are finished. Otherwise, you can place it where-ever you feel like and just symlink init.el to ~/.emacs; it is designed to be portable like this.

I now use el-get for managing dependencies, which made a huge difference after years of hand-managing git submodules. This should bootstrap itself already on first load, but if for some reason an install fails (a host is down, etc) you might need to disable entries in *mh/packages* for example.

General Notes

The top-level file is init.el; it basically just adds its parent directory (which should be where you checked this out) to the load-path, and loads a bunch of mode- and task-specific files. These are by convention named custom-<task>.el, mainly so they will be grouped together in a directory listing. The exception is the allowance for platform-specific initialisation, which is loaded by looking for a file with the same name as the symbol-value of system-type.

For efficiency, I have borrowed a few hints from Jacob Gabrielson's post on effective emacs, in particular setting things up for autoload where possible, and as a result making heavy use of eval-after-load. This might occasionally make it a bit harder to read.

There's a bit of defensive coding; in place of (require 'foo) followed by configuration, I tend to use (when (require 'foo nil t) ...) instead. The last argument to require means to simply return nil but not signal an error in the event that a feature cannot be loaded. Yes, this all could and possibly should be wrapped as a macro.

Something went wrong with that request. Please try again.