Skip to content

purcell/package-lint

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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