Skip to content
My Emacs initialization files
Emacs Lisp E Other
Find file
New pull request
Latest commit 1b25bb2 @jimm init move


Welcome to my Emacs initialization files.

The main initialization file is emacs.el, which is loaded as part of a machine-specific bootstrap process.


I use ELPA, the Emacs Lisp Package Archive, but don’t check that directory into this repository.

Load Path

The global variable *my-emacs-lib-dir* must be defined to point to this directory.

The load path is set up to look in the Emacs installation first, then in *my-emacs-lib-dir*.

Bootstrap Process

Since I use Emacs on multiple machines, I came up with a customization scheme that lets me run “before” and “after” code for each machine around my main initialization code. Each domain (work, home, etc.) gets its own subdirectory and each machine gets its own subdirectory within the domain. Inside that are up to four files: dot_emacs, before.el, after.el, and the bookmark file emacs.bmk (which is not checked in to source control).

On each box I create a soft link from the appropriate dot_emacs file in that machine’s bootstrap/DOMAIN/MACHINE directory to ~/.emacs. Here’s the .emacs file on the machine I’m using right now, which is really a link to ~/Library/elisp/home/nimbus/dot_emacs:

;; -*- emacs-lisp -*-
(defvar *my-emacs-lib-dir* "~/Library/elisp/")
(load-file (concat *my-emacs-lib-dir* "bootstrap-init.el"))
(bootstrap-init "home" "sysex")

See bootstrap-init.el for the definition of bootstrap-init. That function finds the directory corresponding containing the customization files corresponding to its args. It then runs the “before.el” file in that directory, then my main customization file “emacs.el”, then the “after.el” file.

Note that the variable *my-emacs-lib-dir* must be defined before calling bootstrap-init. Yes, we could pass its value into that function, but since it is used and assumed to exist elsewhere, that function might as well assume it exists.

See Also

See also my Emacs tips page.

Something went wrong with that request. Please try again.