Managing my Emacs packages with el-get
Update (20 April 2011): I’ve now tried this on my old MacBook running OS X
10.5. The bootstrap script initially threw an error, which I tracked down to an
outdated version of
git. Once I upgraded
git and installed
bzr (used by
python-mode recipe), I started Emacs and was rewarded with a fully
functioning installation, complete with the extensions I want.
I’m on vacation for two weeks between jobs, so of course this means it’s time to
sharpen the tools (because writing programs to help you write programs is almost
always more fun than actually writing programs). I’ve been an Emacs user
for many years, and of course I’ve customized my installation with additional
modes and extensions. Previously I would check out code that I needed into a
vendor directory, and then load it manually in
init.el. And this worked
fine, but that doesn’t mean I
can’t won’t spend a chunk of my day making it
A friend mentioned el-get to me, and I decided to give it a try. I
like the combination of recipes for installing common things, and the fact
that your list of packages is very explicit in
init.el (so if I need to dig
into one of them, I know exactly where to begin). Additionally, since I’ll have
a new computer issued for the new job, I also wanted to get things into shape so
that I could easily replicate my preferred editing environment. I wound up
creating a small bootstrap file to help things along, getelget.el.
getelget.el checks to see if el-get has been previously bootstrapped, and if
not, performs the lazy installation procedure. After it makes sure el-get is
available, it loads and executes el-get. So if you need to get a new machine up
and going with Emacs and any extensions, you can drop in your
getelget.el, and Emacs will take care of the rest.
To use getelget, define your
el-get-sources like you normally would in
(setq el-get-sources '(el-get python-mode ;; etc... ) )
Then load getelget (the following assumes you have getelget.el in your user
emacs directory along with
;; getelget -- bootstrap el-get if necessary and load the specified packages (load-file (concat (file-name-as-directory user-emacs-directory) "getelget.el"))
getelget will handle bootstrapping, loading, and executing el-get.
getelget is pretty trivial; you can download it here, and I’ve waived any rights I may hold on the code using the CC0 Public Domain Dedication .