Skip to content
Makefile-like script for building and testing Emacs Lisp packages
Shell Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
Makefile is a script to help build and test Emacs Lisp packages (not Emacs itself). It aims to make linting and testing as simple as possible. Source files and test files are discovered automatically from the project’s Git repo. Output is simple: by default, there is no output unless errors occur. With increasing verbosity levels (with -v or -vv options), more detail gives positive feedback. Output is colored by default to make reading easy.



Copy into your package’s root directory. Optionally, also copy Makefile, to make calling the script easier.


The script can be called directly or through a Makefile.


A default Makefile is provided which calls the script. Call it with the name of a rule and an optional verbosity level, like:

# Run all rules.
$ make

# Run all lints.
$ make lint

# Run all tests.
$ make test

# Run ERT tests with verbosity level 1.
$ make v=v test-ert

# Run Buttercup tests with verbosity level 2.
$ make v=vv test-buttercup


The script may be called directly to specify additional options. [OPTIONS] RULES...

  all      Run all lints and tests.
  compile  Byte-compile source files.

  lint           Run all lints.
  lint-checkdoc  Run checkdoc.
  lint-compile   Byte-compile source files with warnings as errors.
  lint-package   Run package-lint.

  test, tests     Run all tests.
  test-buttercup  Run Buttercup tests.
  test-ert        Run ERT tests.

  -d, --debug    Print debug info.
  -h, --help     I need somebody!
  -v, --verbose  Increase verbosity, up to -vv.

  -f FILE, --file FILE  Check FILE in addition to discovered files.

  --no-color        Disable color output.
  -C, --no-compile  Don't compile files automatically.

Source files are automatically discovered from git, or may be
specified with options.



Initial release.


Inspired by Damien Cassou’s excellent makel project.


Bug reports, feature requests, suggestions — oh my!



You can’t perform that action at this time.