El-Get 4.1 is out
Please welcome the new stable version of
El-Get, the much awaited
version 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,
such as
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
publish any
elisp
code you
write.
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
C-h i runs the command info
?), running
./configure && make
for you,
byte
compiling the sources you just retrieved, adding the necessary
autoload
support, etc.
And of course one of the
methods supported by El-Get is
ELPA
, known as
Emacs
Lisp Package Archive and implemented by
package.el
.
So definitely, you typically want both
ELPA
and
El-Get.
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
590
of 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-sources
has 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
management.
-
Enhanced notification support, from
DBUS
togrowl
. -
Support for checksums with a lot of source types.
-
Completing our
git
support, shallow clones and submodules are there. -
Better support for
github
including thezip
andtar
releases. -
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!
Using El-Get
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
C-j
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
2000
available packages. Mark the ones you want to install with
i
then type
x
to
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
the previous
*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
El-Get
initialize
<package>
.
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
github
and
184
forks. I almost can’t believe
it!
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
to
4.2
in quite a short time. As that’s not an individual effort by any
mean, though, only history will tell.
The roadmap
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
did
rm -rf
a directory holding an El-Get managed extension: we should mark
it
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
is that
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
recipe.
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-remove
then
el-get-install
packages to get them back.
Conclusion
El-Get
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
4.0.7.6901194
while writing this post.
4.0
is the development version of
what is now released as
4.1
.
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!