git clone 'git://github.com/rdallasgray/pallet.git'
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 system
M-x pallet-install installs packages listed in your Cask file
M-x pallet-update updates installed packages
Pallet'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
t) to your Emacs init file, or by calling
pallet-mode interactively (
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:
In this case run
M-x list-packages, and install pallet. Then,
M-x pallet-init. Now you have a Cask file in your emacs.d
directory which contains listings for all files you've previously
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
In this case, create a file called
Cask in your emacs.d
directory. Add the following lines to it:
```lisp (source melpa)
(depends-on “pallet”) ```
Then, in terminal and in your emacs.d directory, run
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
If you want pallet to maintain your Cask file automatically as you
install and delete packages using Emacs' built-in package-management,
pallet-mode by calling
(pallet-mode t). You can enable or
pallet-mode at any time by interactively calling
If you prefer to have Pallet ignore part of your Cask file (e.g. so
you can use Cask's
;;;pallet-ignore comment. Pallet will ignore any text after
(depends-on "newlisp" :git
Contributions to pallet are very welcome.
Fork and clone the repo, then run
submodule update --init, which will install
cask install to install development dependencies. You
should now be able to run the tests:
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 \
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.