You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 the
flycheck-package and
package-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 get
package-lint is as a package from the MELPA
repository. 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 use
package-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 using define-derived-mode or define-minor-mode
Referring to display-graphic-p or window-system in -theme.el files