                        relint version history
                        ======================


Version 2.2

- Parse Emacs 31 format strings
- Check regexp arguments to string-split (alias for split-string)

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*
- Extended regexp-generating heuristics, warning about suspiciously-named
  variables used as skip-sets
- "-patterns" and "-pattern-list" are no longer interesting variable
  suffixes

Version 1.5
- Substantially improved evaluator, able to evaluate some functions and
  macros defined in the same file, even when passed as parameters
- Detect regexps spliced into [...]
- Check bad skip-set provenance
- The *relint* buffer now uses a new relint-mode for better usability,
  with "g" bound to `relint-again'

Version 1.4
- First version after name change to `relint'
