Pallet is a package management helper for Emacs.
It uses @rejeep's excellent Cask as a platform to keep track of your installed packages.
Version 0.9 introduces support for Cask version and VC references, which will now be retained if specified in your Cask file:
(depends-on "graphene" "20141030.219")
(depends-on "pallet" :git "https://github.com/rdallasgray/pallet" :ref "master")
Many thanks to Sam Brightman for implementing this feature.
Version 0.8 introduces the ;;;pallet-ignore
comment, which allows
you to tell Pallet to ignore (and retain) text following the comment.
Version 0.7 introduces a significant breaking change: it is now
necessary to start pallet-mode
for pallet to track your package
installs and deletes. See the instructions below.
Version 0.7 introduces a new integration test harness using Servant. This is intended to allow safer and quicker addition of new features going forward.
Pallet is currently tested with Emacs versions 24.3 through 24.4.
Pallet has a very simple interface:
M-x pallet-init
creates a Cask file using information about
installed packages from the package.el systemM-x pallet-install
installs packages listed in your Cask fileM-x pallet-update
updates installed packagesPallet's main job, though, is to add and delete package references
from your Cask file as you install and delete them using the built-in
Emacs package management system. Turn this on by adding (pallet-mode t)
to your Emacs init file, or by calling pallet-mode
interactively (M-x pallet-mode
).
To install pallet, you should first install Cask, following the instructions here. At present, just install Cask -- don't add anything to your .emacs or init.el file.
After installing Cask, there are two ways you can go, depending on your situation:
I have a working Emacs install, with packages already installed, and can access Melpa.
In this case run M-x list-packages
, and install pallet. Then,
run M-x pallet-init
. Now you have a Cask file in your emacs.d
directory which contains listings for all files you've previously
installed via package-install
. Run M-x pallet-install
, and your
.emacs.d/elpa directory will be replicated under .emacs.d/.cask/.
You can if you wish now delete your .emacs.d/elpa directory, and
remove any lines from your init.el adding archives to
package-archive
, or running package-initialize
.
I have a newly installed Emacs and/or am not set up to access Melpa.
In this case, create a file called Cask
in your emacs.d
directory. Add the following lines to it:
(source melpa)
(depends-on "pallet")
Then, in terminal and in your emacs.d directory, run
cask install
This will create a .cask directory inside your .emacs.d directory, initialize a package directory under .emacs.d/.cask/, and install pallet to it.
Finally, make sure the following lines are in your init.el, before any packages are required:
(require 'cask "<path-to-cask>/cask.el")
(cask-initialize)
(require 'pallet)
(pallet-mode t)
<path-to-cask>
will vary depending on how you installed Cask: if you
installed via the curl
method, it is likely to be ~/.cask
; if you
installed via Homebrew, it is likely to be
/usr/local/Cellar/cask/<version>
.
If you want pallet to maintain your Cask file automatically as you
install and delete packages using Emacs' built-in package-management,
enable pallet-mode
by calling (pallet-mode t)
. You can enable or
disable pallet-mode
at any time by interactively calling
pallet-mode
(M-x pallet-mode
).
If you prefer to have Pallet ignore part of your Cask file (e.g. so
you can use Cask's
VC dependencies),
use the ;;;pallet-ignore
comment. Pallet will ignore any text after
this comment.
(source melpa)
(depends-on "s")
;;;pallet-ignore
(depends-on "newlisp" :git
"https://github.com/coldnew/newlisp-mode.git")
Contributions to pallet are very welcome.
Fork and clone the repo, then run git submodule update --init
, which will install
el.mk.
Install Cask.
Then run cask install
to install development dependencies. You
should now be able to run the tests: make test
.
The pallet dev setup includes a Vagrantfile, which allows pallet to be tested against a selection of recent Emacs releases.
Having installed Vagrant, add the necessary box by running:
vagrant box add trusty-server \
https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-i386-vagrant-disk1.box
Then run vagrant up
. This may take a while, as several versions of
Emacs may be downloaded and installed from source.
Shell into the vm by running vagrant ssh
, and run the tests using
./test_all.sh
. This will run the complete test suite against all
installed Emacs versions.
Any new feature or fix should be covered by tests -- see the files in /test for guidance on how to write your own. When you've created your feature or fix, make a pull request against master in this repo.