#+title: jinx.el - Changelog
#+author: Daniel Mendler
#+language: en

* Version 2.5 (2025-11-29)

- Actions can be triggered via digit keys now.
- Drop legacy =annotation-function=.

* Version 2.4 (2025-10-13)

- =jinx-exclude-properties=: New variable to exclude propertized text from
  checking. Exclude =read-only= text by default.
- Use =eager-display= for the default completion UI.
- Require Emacs 29.

* Version 2.3 (2025-07-28)

- ~jinx-correct-all~: Show message if ~ONLY-CHECK~ is non-nil.

* Version 2.2 (2025-05-26)

- Stop using =enchant_dict_get_extra_word_characters=. Instead rely on the
  =jinx--syntax-table= for tokenization.

* Version 2.1 (2025-04-04)

- ~jinx-correct~: For capitalized words, offer lower case variants to save in
  personal dictionary and file local variables.
- Add ~help-echo~ to the Jinx overlays.

* Version 2.0 (2025-03-11)

- Add ~jinx-dir-local-words~ saved in ~.dir-locals.el~. Words can be added to the
  ~.dir-locals.el~ with the ~/~ key in the ~jinx-correct~ dialog. The ~.dir-locals.el~
  file of the current or a parent directory is used. If it does not exist it is
  created in the project root or the current directory.

* Version 1.12 (2025-01-28)

- Improve performance in large folded Org buffers.
- Support ~lisp-data-mode~.
- Retain dictionaries in weak hash table for sharing.

* Version 1.11 (2024-12-22)

- Require Emacs 28.1.
- Remove special ~org-fold~ code. Set ~org-fold-core-style~ to ~overlays~ if unfolding
  in Org files does not work for you.
- ~jinx-languages~: Group dictionaries by dictionary provider.

* Version 1.10 (2024-07-23)

- Bump Compat dependency to Compat 30.
- Add include and linkpaths from FreeBSD for compilation.
- Add ~jinx--syntax-overrides~ to override syntax table.

* Version 1.9 (2024-06-29)

- Bugfix: In some rare scenarios, Jinx could hang when checking pending regions.
- ~jinx-correct-all~: Add ~ONLY-CHECK~ prefix argument.

* Version 1.8 (2024-06-19)

- Bugfix in ~jinx-correct~: Fix ~wrong-type-argument~ error if no Enchant
  dictionaries are found.

* Version 1.7 (2024-05-15)

- ~jinx--word-valid-p~: Do not error on invalid characters.
- ~jinx-save-languages~: New custom variable.

* Version 1.6 (2024-04-12)

- Bugfix (again): Ensure that directory local variables work correctly with
  Jinx. It is possible to turn Jinx on or off via dir-locals, and also configure
  the language and local words.

* Version 1.5 (2024-04-04)

- Bugfix: Ensure that ~jinx-next~ unfolds hidden misspellings.
- Bugfix: Ensure that directory local variable enabling ~jinx-mode~ works.

* Version 1.4 (2024-03-10)

- Bugfix: Ensure that ~jinx-correct~ saves words without text properties in the
  file-local variable ~jinx-local-words~.
- Bugfix: Ensure that ~eval~ local variable enabling ~jinx-mode~ works.
- ~jinx-correct~: If a region is marked, call ~jinx-correct-all~ and restrict
  corrections to the marked region.
- ~jinx-exclude-faces~, ~jinx-include-faces~, ~jinx-exclude-regexps~: Support mode
  aliases.

* Version 1.3 (2024-02-23)

- Fix interaction bug with the newest version of AUCTeX, where the major mode
  got changed unexpectedly.

* Version 1.2 (2024-01-22)

- Fix deadlock on MacOS during Jinx startup.
- Timer optimizations.

* Version 1.1 (2023-12-27)

- Add mouse context menu to correct misspellings. The menu is triggered by a
  right click on a misspelling.

* Version 1.0 (2023-12-01)

- Allow capitalized form of a word if non-capitalized word is stored in the
  session word list.
- Replace =jinx-excluded-modes= with =global-jinx-modes=, the Emacs 28 convention
  for globalized minor modes.
- =jinx-correct=: Offer session words as suggestions.
- Add =jinx-correct-nearest=, =jinx-correct-all= and =jinx-correct-word= commands. The
  command =jinx-correct= dispatches to one of those commands depending on the
  prefix argument.
- Recommend libenchant 2.3.1 or newer. Print a message if Enchant is outdated.
- Support $LANG=C and $LANG=POSIX environment variable settings.

* Version 0.9 (2023-07-02)

- 🪄 Make sure that Emojis are not marked as misspelled 🧙🏼‍♀️.
- Rename =jinx-correct-next/previous= to =jinx-next/previous=. The commands can be
  used outside the minibuffer.
- Bind =M-n= and =M-p= to =jinx-next/previous= in =jinx-overlay-map=.
- Bind =M-$= to =jinx-correct= in the =jinx-overlay-map=.
- Add =jinx-repeat-map=.
- Rename category of Jinx overlays to =jinx-overlay=.
- Rename =jinx-misspelled-map= to =jinx-overlay-map=.
- Add many more language modes to =jinx-camel-modes=.

* Version 0.8 (2023-04-28)

- =jinx-correct=: Consistently move backward to the previous misspelling. In order
  to move backward further, press =M-$= again (or =M-p=). Move forward with =M-n=.
- =jinx-correct-select=: Support more than 10 quick keys.
- =jinx-languages=: New argument =LANGS=.
- Add =jinx-faces= customization group.
- Add configurable save actions via =jinx--save-keys=.
- Detect C compiler via $CC or =executable-find=.

* Version 0.7 (2023-04-21)

- Bugfixes
- =jinx-languages=: Only ask in file-backed buffers if file-local variable should
  be saved.
- Push =undo-boundary= before correcting a word, such that corrections are not
  undone in a single step.
- =jinx-correct=: Use =+= as prefix to add word to the current session.
- Add =jinx-correct-map= bound in the =jinx-correct= minibuffer.
- Add navigation keys to correction UI. The commands =jinx-correct-next= and
  =jinx-correct-previous= are bound to the keys =M-n= and =M-p= in the
  =jinx-correct-map= respectively. The commands accept prefix arguments to skip
  over a number of misspellings.
- Add quick selection keys to correction UI. The command =jinx-correct-select= is
  bound to the keys =1= to =9= in the =jinx-correct-map=.
- Try to locate the native module =jinx-mod.so= first on the =load-path= before
  attempting to compile it. This is useful if the module is packed and installed
  separately.

* Version 0.6 (2023-04-17)

- Fix the type of a few characters: =.= punctuation character, ='= word character, =%=
  and =$= identifier characters.
- Abandon =flyspell-mode-predicate= completely. Rely on faces only.
- =jinx-languages=: The value must be a string now. Multiple language codes can be
  separated by space.
- =jinx-languages=: Ask if the file-local variable should be saved when changing
  the language.
- Add =jinx-local-words= to save file-local words. =jinx-correct= supports saving to
  =jinx-local-words= by pressing =*=.
- Add a lighter and a minor mode menu.
- Avoid scheduling the idle timer while typing a word.

* Version 0.5 (2023-04-05)

- Add =jinx-languages= command to switch languages locally or globally.
- =jinx-correct=: When checking the whole buffer via =C-u M-$=, don't restore
  original point position upon =C-g= to ease cursory edits. Instead push a mark
  which can be used to go back to the original position.
- Add =jinx-mode-map= to make it easy to bind keys if =jinx-mode= is enabled. The
  map is empty by default.
- Ignore single quotes and apostrophes at the beginning and end of words. Please
  provide feedback if this is a reasonable approach.
- Support spell checking of camelCased words via the =jinx-camel-modes= variable.

* Version 0.4 (2023-03-27)

- =jinx-languages=: Fall back to =$LANG= environment variable, since
  =current-locale-environment= is an Emacs 29 addition.
- =jinx--mod-wordchars=: Handle non-UTF8 return values gracefully.
- =jinx-correct=: Always start from nearest overlay.
- =jinx-misspelled=: Use less obtrusive color for the underlining.

* Version 0.3 (2023-03-27)

- Add =jinx-misspelled-map=.
- =jinx-correct=: Unfold invisible line when correcting misspellings.
- =jinx-correct=: Show number of misspellings.
- Add =emacs-module.h= to avoid compilation problems.
- =jinx-languages=: Use =current-locale-environment= by default.

* Version 0.2 (2023-03-26)

- Start of changelog.
