 <p>My <em>.emacs</em> file loads <em>~/.emacs.d/init.el</em>, which defines the following functions, written first for XEmacs, but working well enough for Emacs these days:</p> <pre><code>(defconst user-init-dir (cond ((boundp 'user-emacs-directory) user-emacs-directory) ((boundp 'user-init-directory) user-init-directory) (t "~/.emacs.d/"))) (defun load-user-file (file) (interactive "f") "Load a file in current user's configuration directory" (load-file (expand-file-name file user-init-dir))) </code></pre> <p>Then the rest of the file goes and loads lots of individual files with forms like this:</p> <pre><code>(load-user-file "personal.el") </code></pre> <p>My current set of files is as follows:</p> <ul> <li>personal.el</li> <li>platform.el</li> <li>cygwin.el</li> <li>variables.el</li> <li>paths.el</li> <li>mail-news.el</li> <li>misc-funcs.el</li> <li>bbdb.el</li> <li>calendar.el</li> <li>gnus-funcs.el</li> <li>c-and-java.el</li> <li>lisp.el</li> <li>clojure.el</li> <li>go.el</li> <li>markdown.el</li> <li>sgml-xml.el</li> <li>tex.el</li> <li>spelling.el</li> <li>org.el</li> <li>packages.el</li> <li>fonts.el</li> <li>color-theme.el</li> <li>frame.el</li> <li>server.el</li> <li>keys.el</li> <li>aquamacs.el</li> </ul> <p>Some of them are much more specific in intent than others, as the names suggest. The more fine-grained the files, the easier it is to disable a cluster of forms when you're reinstalling a package or library. This is especially useful when "moving in" to a new system, where you drag your configuration files over but don't yet have all the supporting packages installed.</p>