Hi everyone,
So, yes, that's a bit of a headache
as well and I think if you are doing a bunch with extra Emacs add-ons,
it would be worth syncing.
Rather than Dropbox, you could use a version control system. My entire
.emacs.d is under git control, I can try out a library, and if I like
it, check it in. That way, I don't really care if my elisp directory is
dirty, I only take home what I like.
Now, that works well for lonely .el files. Two problems arise if :
1. The library is a clone of another git repository (like org)
2. The library comes from melpa (also like org)
For the first one, technically, you could checkout org git repository
inside your .emacs, and manage it as a submodule, but they are a huge
pain. If you pull it out you can keep everything in sync though, and
still be able to play around with org branches.
For the second one, melpa packages change too often to make it practical
to check them in. One solution is use cask, as recommended by Grant, the
other one (a bit more simplistic), is to make sure that the library is
installed on every box you use, so the sync happens at the (m)elpa
level. I have the following code in my init.el (it comes from emacs
prelude I think) :
(require 'cl)
(package-initialize)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/"))
(unless package-archive-contents
(package-refresh-contents)
(defvar my-packages
'(org auctex ess)
"A list of packages to ensure are installed at launch.")
(dolist (pack my-packages)
(when (not (package-installed-p pack))
(package-install pack)))))
This makes sure org from melpa is installed when emacs starts. It
doesn't check whether it's the last version though.
Clément