Version 2.1 of package Relint has just been released in GNU ELPA. You can now find it in M-x list-packages RET.
Relint describes itself as: =========================== Elisp regexp mistake finder =========================== More at https://elpa.gnu.org/packages/relint.html ## Summary: relint -- Emacs regexp mistake finder ===================================== Relint scans Emacs Lisp files for mistakes in regexps, including deprecated syntax and bad practice. It also checks the regexp-like arguments to the functions skip-chars-forward, skip-chars-backward, skip-syntax-forward and skip-syntax-backward. * Contents - Usage - Installation - Configuration - What the diagnostics mean - Suppressing diagnostics - How it works - Bugs * Usage - Check a single file: M-x relint-file - Check all .el files in a directory tree: M-x relint-directory - Check current buffer: M-x relint-current-buffer In the *relint* buffer, pressing "g" will re-run the same check. - From batch mode: ## Recent NEWS: relint version history ====================== Version 2.1 - Robustness fixes - Summary now counts unsuppressed problems Version 2.0 - Compatibility break: `relint-buffer` now returns a list of `relint-diag` objects. Use the `relint-diag-` accessors for reading their slots. Each object now has BEGIN..END ranges instead of just the starting point, which allows a user interface to highlight the corresponding part of the code buffer in a suitable way. There are now the severity levels `error`, `warning` and `info`. - When running interactively (`relint-directory`, `relint-file` or `relint-current-buffer`), the new `relint-buffer-highlight` face is used for relevant parts of a string in the `*relint*` buffer. This face can be customised or themed by the user. - In batch mode (`relint-batch`), the new variable `relint-batch-highlight` is used to determine how relevant parts of a string are marked in the output. The default is to use reverse video for terminal display. This variable can be customised by the user. - Some performance improvements - Requires xr 2.0 and Emacs 27.1 or later Version 1.24 - Fix a `next-error' bug - Some performance improvements Version 1.23 - New defcustom `relint-xr-checks' that enables optional xr checks. - Add regexp detection in uses of the treesit API. - Better backquote expansion inside rx forms. Version 1.22 - String char escape check now detects \8, \9, and \x without hex digit Version 1.21 - Check for duplicates in rx or-forms - Robustness improvements Version 1.20 - More compact distribution Version 1.19 - Progress indicator in `relint-directory' - Some performance improvements - Fix some false positives in the regexp provenance detector - Scan assignments to `font-lock-defaults' correctly - Recognise regexp arguments to functions in the s.el package Version 1.18 - New check for ineffective backslashes in all strings (not just regexps) - Warnings emitted in order of their position in file or buffer - Performance improvements Version 1.17 - Fixed message display on Emacs 26 Version 1.16 - Suppression comments now use regexp matching of messages - New filename-specific checks in calls to `directory-files' etc - Check some keyword arguments (:regexp and :regex) - Improved rx checks - `relint-directory' now displays number of files found Version 1.15 - Improved position accuracy in various lists of regexps - Check for mistake in rx `any' forms - `relint-buffer' now also returns severity (warning, error) - Relint can now also check the *scratch* buffer Version 1.14 - Added `relint-buffer' - Report error position inside string literals when possible - Scan arguments to `search-forward-regexp' and `search-backward-regexp' - Use text quoting for messages Version 1.13 - Look in function/macro doc strings to find regexp arguments and return values - Detect binding and mutation of some known regexp variables - Detect regexps as arguments to `syntax-propertize-rules' - More font-lock-keywords variables are scanned for regexps - `relint-batch' no longer outputs a summary if there were no errors Version 1.12 - Improved detection of regexps in defcustom declarations - Better suppression of false positives - Nonzero exit status upon error in `relint-batch' Version 1.11 - Improved evaluator, now handling limited local variable mutation - Bug fixes - Test suite Version 1.10 - Check arguments to `skip-syntax-forward' and `skip-syntax-backward' - Add error suppression mechanism Version 1.9 - Limited tracking of local variables in regexp finding - Recognise new variable `literal' and `regexp' rx clauses - Detect more regexps in defcustom declarations - Requires xr 1.13 Version 1.8 - Updated diagnostics list - Requires xr 1.12 Version 1.7 - Expanded regexp-generating heuristics - Some `defalias' are now followed - All diagnostics are now documented (see README.org) Version 1.6 - Add `relint-current-buffer' - Show relative file names in *relint* ... ...