146

GitHub - purcell/package-lint: A linting library for elisp package metadata

 6 years ago
source link: https://github.com/purcell/package-lint
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK