Please welcome the new stable version of
El-Get, the much awaited
4.1 has now been branched for your pleasure. It's packed with lots of
features to make your life easy, comes with a
Info documentation book and
even has a
logo. That's no joke, I found one, at least:
Why El-Get is relevant
Emacs 24.1 is the first release that includes
package.el, and it even allows
the user to setup several sources where to fetch packages. Those sources,
Marmalade, are hosting lots of third party code for Emacs.
package.el makes it easy to
install (partly) those software.
This is a very fine way of getting extra features in your Emacs installation, and one that is supported out of the box. For a package to be listed, its sources need to be prepared, and you need to rely on the central website you now depend on to be up and running and accessible.
El-Get is all about allowing you to easily cope with the still vast majority of Emacs Lisp extensions you can find out there, that is non packaged code that is only available on some more or less mainstream distribution method, ranging from EmacsWiki to github including bare HTTP personal hosting.
With El-Get, you fetch the package where it's located. There's no need for a
central server to host packaged and released software, and it's easy to
share your findings with friends, or even to
elisp code you
El-Get will also take care of final steps that
package.el did choose not to
support, such as including
Info material in your info browser (remember
i runs the command info?), running
./configure && make for you,
compiling the sources you just retrieved, adding the necessary
And of course one of the
methods supported by El-Get is
ELPA, known as
Lisp Package Archive and implemented by
So definitely, you typically want both
El-Get 4.1 Changelog Summary
The new El-Get release is packed with features. It really is. I will only list some of them now:
- Plenty new recipes, we now have
590of them managed in the El-Get source
repository itself, and El-Get will download the current
EmacsWiki list of
emacs lisp files at install time too.
- The default installation and usage has been simplified a lot.
- More options are provided to setup El-Get packages, see
el-get-user-package-directory for example.
- Part of the simplification,
el-get-sourceshas been revisited and now
serves only one goal.
- We dropped
(el-get 'wait)which was a misconception and had been broken
for a long time in the development version of El-Get.
- We made improvements in the error handling and in dealing with some
corner cases that still happen often enough for users to report them. Please continue reporting them!
- More caching is done, with a better dependency tracking and status
- Enhanced notification support, from
- Support for checksums with a lot of source types.
- Completing our
gitsupport, shallow clones and submodules are there.
- Better support for
- Ability to reload a package when it's been updated.
- Moar features
And most importantly, El-Get documentation is now almost complete and comes in the nice Info format I know you've been expecting for so long!
Here's a quick summary of what using El-Get is like, for a new user in 4.1.
If you're already using El-Get see the section about upgrading. To install
El-Get you need to paste those lines to your
*scratch* buffer then hit
after the last closing parenthesis:
(url-retrieve "https://raw.github.com/dimitri/el-get/master/el-get-install.el" (lambda (s) (goto-char (point-max)) (eval-print-last-sexp)))
Then you can try
M-x el-get-list-packages and browse through more than
available packages. Mark the ones you want to install with
i then type
see El-Get fetch and install all those packages you just selected. Here's a
summary of what's available to you in the
M-x el-get-list-packages buffer:
Major Mode Bindings: SPC el-get-package-menu-mark-unmark ? el-get-package-menu-describe d el-get-package-menu-mark-delete g el-get-package-menu-revert h el-get-package-menu-quick-help i el-get-package-menu-mark-install u el-get-package-menu-mark-update x el-get-package-menu-execute
Once a package is
installed, El-Get will
initialize it for you, and it will
also do that step at every Emacs startup from there on, provided that you
added some lines to your
~/.emacs initialization file, that look a lot like
*scratch* code you did paste:
;; ;; Here's a typical El-Get integration for your .emacs file: ;; (add-to-list 'load-path "~/.emacs.d/el-get/el-get") (setq el-get-user-package-directory "~/.emacs.d/packages.d/") (unless (require 'el-get nil t) (with-current-buffer (url-retrieve-synchronously "https://raw.github.com/dimitri/el-get/master/el-get-install.el") (goto-char (point-max)) (eval-print-last-sexp))) (el-get 'sync)
Then you can add files named like
init-<package>.el in the
el-get-user-package-directory directory, those files will get loaded when
You can also use
M-x el-get-install if you want to bypass the full screen
package listing, you will get completion on the package name.
Community and development
El-Get community grew to be a really cool place to be participating in these
days, with core and
recipe contributions from more than 130 different people
already, and with 526 stars on
184 forks. I almost can't believe
git --no-pager shortlog -n -s | wc -l 137 git --no-pager shortlog -n -s | head -10 734 Dimitri Fontaine 336 Ryan C. Thompson 114 Julien Danjou 110 Dave Abrahams 73 Ryan Thompson 72 Sébastien Gross 42 Takafumi Arakaki 27 Alex Ott 25 Yakkala Yagnesh Raghava 21 Rüdiger Sonderfeld
Now that we have something that looks like a
core team forming up, I'm
thinking about scheduling much more aggressive stable release. 4.1 has been
very long in the making, I hope to now have a rapid release cycle leading us
4.2 in quite a short time. As that's not an individual effort by any
mean, though, only history will tell.
We have lots of ideas and some rough edges to address, so 4.1 is only a stop
in the release history of El-Get. Next ideas include better error management
in face of rare corner cases and in face of external events, like when you
rm -rf a directory holding an El-Get managed extension: we should mark
removed and clean up the
autoloads that came from it.
Upgrading to 4.1
This item has received some treatment in the documentation. The basic idea
el-get-sources is no longer what it used to be, it's now only an
alternative source location for
recipes, like it should always have been.
Not that you can still
override in there some properties that you want
merged with an official
The new thing about
el-get-sources is that it will no longer be the
authoritative list of packages that El-Get manages. That list is not either
given explicitly when calling the
el-get function in your
.emacs setup, or
derived from the packages that are known
installed on your system (like e.g.
debian is doing).
Also, given that it took us so much time to brew
4.1 a lot of packages have
changed either their hosting location or even switched their
SCM. In such
cases an automatic update of the recipe will no longer be possible, you
might need to
el-get-install packages to get them back.
4.1 is now ready for public consumption, don't be shy, we've been a
lot of users running the development branch for a long time now, I'm running
220.127.116.1101194 while writing this post.
4.0 is the development version of
what is now released as
Many thanks to all who contributed to El-Get and to all our users, I'm very proud that together we worked out a very nice and complete tool!