Need help with package-lint?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

purcell
153 Stars 25 Forks GNU General Public License v3.0 520 Commits 27 Opened issues

Description

A linting library for elisp package metadata

Services available

!
?

Need anything else?

Contributors list

Melpa Status Melpa Stable Status Build Status Support me

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 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

License

Please refer to the file

LICENSE
.

Credits

package-lint
was written by Steve Purcell with significant contributions from Fanael Linithien.


Author links:

💝 Support this project and my other Open Source work

💼 LinkedIn profile

✍ sanityinc.com

🐦 @sanityinc

✍ fanael.github.io

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.