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

* 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.
