GitHub - purcell/package-lint: A linting library for elisp package metadata (original) (raw)
package-lint
This library provides a linter for the metadata in Emacs Lisp files which are intended to be packages. You can integrate it into your build process.
package-lint
detects various issues that may make your package uninstallable or unusable for some users, and it warns about significant deviations from the Elisp coding conventions, such as non-compliant symbol naming, and use of reserved keybindings. Among other community uses, package-lint
is a prerequisite for submission of packages to MELPA.
package-lint
can be used standalone, but see also theflycheck-package andpackage-lint-flymake
packages, which both use package-lint
to conveniently display packaging errors directly in the buffer while writing elisp packages.
Installation
The recommended way to getpackage-lint
is as a package from the MELPArepository. The version of package-lint
there will always be up-to-date. There are also packages in MELPA Stable, which track the latest numbered tag.
Usage
Use the command package-lint-current-buffer
interactively, or usepackage-lint-buffer
if linting programmatically.
If you're a package author, you can include package-lint
in your build process by ensuring that the package is installed, and then using the function package-lint-batch-and-exit
to lint your files -- see run-tests.sh
in this repo for an example.
Roadmap
Additional checks for future versions:
- WARN: header line formatting / capitalisation
- trailing line presence / formatting
- WARN: library is called *-mode but doesn't provide a major mode
- checkdoc failures for interactive functions / defcustoms
- trailing whitespace?
- themes which aren't in a matching *-theme.el file
- use of unsafe local variables
- local variable set in header line
- using commentary to talk about load[- ]path and installation
- lack of autoloads
- references to README files which won't be bundled in a package
- use of CamelCase identifiers
- Defining a
-mode
function directly instead of usingdefine-derived-mode
ordefine-minor-mode
- Referring to
display-graphic-p
orwindow-system
in-theme.el
files
License
Please refer to the file LICENSE
.
Credits
package-lint
was written bySteve Purcell with significant contributions from Fanael Linithien.
Author links: