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

* Version 2.7 (2026-05-19)

- Require Compat 31.

* Version 2.6 (2026-01-24)

- Remove obsolete ~cape-capf-purify~ and ~cape-wrap-purify~.
- ~cape-capf-properties~: Remove support for ~:strip~ argument. Ensure that relevant
  table metadata is overridden too.

* Version 2.5 (2026-01-17)

- Use =when-let*=.

* Version 2.4 (2025-12-21)

- ~cape-file~: Add location metadata for file preview via ~corfu-popupinfo-mode~.

* Version 2.3 (2025-11-15)

- Mark ~cape-capf-purify~ and ~cape-wrap-purify~ as obsolete.
- ~cape-capf-sort~: Make ~SORT~ function argument optional. If the ~SORT~ argument is
  nil or not given, the completion UI sorting will take over.
- ~cape-capf-trigger~, ~cape-wrap-trigger~: New Capf transformer for trigger
  characters. The Capf will only complete if the trigger character occurs before
  point. See also ~corfu-auto-trigger~.
- ~cape-capf-choose~, ~cape-wrap-choose~: New Capf transformer to choose from
  multiple Capfs.

* Version 2.2 (2025-10-13)

- Minor improvements.
- Require Emacs 29.

* Version 2.1 (2025-05-21)

- Simplify ~cape-dabbrev~ configuration.
- ~cape-dabbrev-buffer-function~: New variable to configure the buffers searched
  by ~cape-dabbrev~.
- ~cape-dabbrev-check-other-buffers~: Removed in favor of ~cape-dabbrev-buffer-function~.
- ~cape-dabbrev-min-length~: Remove variable, since it leads to confusion due to
  missing completion candidates.
- ~cape-same-mode-buffers~: New public function, renamed from
  ~cape--buffers-major-mode~.
- ~cape-text-buffers~: New function.
- ~cape-dabbrev-buffer-function~, ~cape-line-buffer-function~: Use
  ~cape-same-mode-buffers~.

* Version 2.0 (2025-03-11)

- ~cape-file~: Improve handling of environment variables as part of the path,
  e.g., ~$HOME~.
- ~cape-company-to-capf~: Handle updated return value convention of the ~prefix~
  action of Company backends.

* Version 1.9 (2025-01-28)

- ~cape-capf-super~: Use extra metadata instead of completion table metadata.
- ~cape-emoji~: Improve emoji name normalization.

* Version 1.8 (2024-12-22)

- Require Emacs 28.1.
- ~cape-capf-properties~: Add ~:strip~ keyword to strip a Capf of its metadata.
- ~cape-capf-sort~: New function.
- Add ~:display-sort-function~ and ~:cycle-sort-function~ functions to the various
  Capf property lists.

* Version 1.7 (2024-08-26)

- ~cape-elisp-symbol~: Add wrappers only if not yet there.
- ~cape-elisp-symbol~: Add wrappers in ~emacs-lisp-mode~ inside strings/comments.

* Version 1.6 (2024-07-23)

- Add ~cape-prefix-map~ for simplified configuration.
- ~cape-wrap-super~: Bugfix. Ensure that annotation functions are called with
  candidates belonging to the originating Capf.
- Disallow ~cape-company-to-capf~ if ~company-mode~ is enabled.
- Bump Compat dependency to Compat 30.

* Version 1.5 (2024-04-12)

- ~cape-file-prefix~: New variable to customize file name completion prefix. If
  the input matches one of the configured prefixes, file completion is started.
- ~cape-capf-super~: Support Capfs which return different prefix lengths. This
  change improves compatibility with Company.
- ~cape-capf-super~: Add support for the ~:with~ keyword. See the docstring of
  ~cape-wrap-super~ for details. This change improves compatibility with Company.
- ~cape-capf-super~: The resulting Capf is exclusive if one of the main Capfs (the
  Capfs listed before the ~:with~ keyword) is exclusive.
- ~cape-capf-super~: If the resulting Capf is non-exclusive, one of the main Capfs
  must have returned candidates, in order for the resulting Capf to return
  candidates.
- ~cape-capf-super~: Normalize plists which are attached to candidates. This helps
  with deduplication, such that only candidates with different annotations or
  icons appear twice.
- ~cape-dabbrev-check-other-buffers~: Support function as customization value. The
  function should return the exact list of buffers to search.

* Version 1.4 (2024-03-08)

- =cape-char=: Look back from point, instead of using the match at point. This
  makes sure that double quotes of a string literal behind point are not
  included in the completion.
- =cape-capf-inside-faces=: Use the face before point to handle completion at the
  end of comments more gracefully.

* Version 1.3 (2024-02-14)

- Add =cape-wrap-inside-code= and =cape-capf-inside-code=.

* Version 1.2 (2024-01-23)

- =cape-capf-super=: Bugfixes.

* Version 1.1 (2023-12-27)

- =cape-capf-super=, =cape-company-to-capf=: Support duplicate candidates.
- Remove obsolete function aliases ~cape-super-capf~, ~cape-interactive-capf~ and
  ~cape-symbol~.

* Version 1.0 (2023-12-01)

- =cape-emoji=: New Capf available on Emacs 29 and newer.
- =cape-wrap-debug=, =cape-capf-debug=: New Capf transformers to add debug messages
  to a Capf.
- =cape-wrap-passthrough=, =cape-capf-passthrough=: New Capf transformers to defeat
  completion style filtering.
- =cape-capf-inside-faces=, =cape-wrap-inside-faces=: New transformer
- Rename =cape-super-capf= to =cape-capf-super=. Add =cape-wrap-super= for consistency
  with other Capf combinators.
- Rename =cape-interactive-capf= to =cape-capf-interactive= for consistency with
  other Capf combinators.
- Rename =cape-symbol= to =cape-elisp-symbol=.

* Version 0.17 (2023-08-14)

- Bugfixes.
- =cape-dict=: Always use grep, remove =cape-dict-use-grep=.
- =cape-dict=: Add =cape-dict-limit=.
- Remove obsolete alias =cape-ispell=.
- Generalize =cape--cached-table=. The candidate computation function must return
  a pair of a predicate function and the list of candidates.

* Version 0.16 (2023-07-02)

- =cape-dabbrev=: Respect =dabbrev-abbrev-char-regexp= and
  =dabbrev-abbrev-skip-leading-regexp=.
- =cape-file=: Quote file names in comint/eshell buffers.

* Version 0.15 (2023-04-17)

- Bugfixes

* Version 0.14 (2023-04-13)

- =cape-wrap-buster=, =cape-capf-buster= and =cape-company-to-capf=: The argument
  VALID must be a function taking two arguments, the old and new input. It
  should return nil if the input must be considered invalid such that the
  candidates must be recomputed.
- =cape-ispell=: Deprecate in favor of improved =cape-dict=. Note that =cape-ispell=
  and =ispell-lookup-words= did not really consult =ispell= or =aspell=, but only grep
  through the word list specified by =ispell-alternate-dictionary=.
- =cape-dict-file=: Support multiple dictionary files or a function returning one
  or more files.
- =cape-dict=, =cape-dabbrev=: Replace case depending on initial input.
- =cape-dict-case-replace=: New variable to configure case replacement, similar to
  =dabbrev-case-replace=.
- =cape-dict-case-fold=: New variable to configure if case is ignored
  during search and completion.
- =cape-elisp-block=: Complete Elisp in Org or Markdown code block. This Capf is
  particularly useful for literate Emacs configurations.

* Version 0.13 (2023-02-15)

- Start of changelog.
