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

* Version 0.35 (2023-07-02)

- Bugfixes.
- =consult--read= now accepts programmable completion tables as argument, e.g.,
  =completion-table-dynamic= or =completion--file-name-table=. This allows you to
  reuse existing completion tables to write completion commands enhanced with
  Consult candidate preview.
- Replace =consult-preview-cursor= face with =cursor-highlight-mark=.
- Change calling convention of =consult-focus-lines= and =consult-keep-lines=.
- The regexps in =consult-buffer-filter= are matched case sensitively now.
  Similarly, the =INCLUDE= and =EXCLUDE= arguments of =consult--buffer-query= are also
  case sensitive.
- Do not preview remote files by default, see =consult-preview-excluded-files=.
- Use =consult--maybe-recenter= instead of =recenter= in =consult-after-jump-hook=.
- =consult-goto-line=: Support =line:column= input.

* Version 0.34 (2023-04-21)

- Bugfixes.
- =consult-org-heading=: Support tag inheritance.
- Use pure =consult--fast-abbreviate-file-name= function to abbreviate file names
  in =consult-buffer= and =consult-recent-file=. This ensures that abbreviation does
  not access the file system (or worse remote hosts via Tramp) and is always
  fast. The downside is that some paths may not get abbreviated.
- Introduce buffer sources =consult--source-project-buffer-hidden= and
  =consult--source-project-recent-file-hidden=. Set the buffer sources of
  =consult-project= to =consult--source-project-buffer= and
  =consult--source-project-recent-file= to ease customization.
- =consult-buffer=: Explicitly save =window-next-buffers= and =window-prev-buffers=.
- When previewing files literally (=consult-preview-raw-size=), set the multi byte
  flag of the previewed buffer, such that UTF-8 buffers are not garbled.
- Do not create preview cursor overlay. Instead display the actual point by
  ensuring that =cursor-in-non-selected-windows= is set.

* Version 0.33 (2023-03-11)

- BREAKING: The key convention has been updated. The old key convention is not
  supported anymore. Keys must now be strings valid according to =key-valid-p=.
  This changes affects the keys =consult-narrow-key=, =consult-widen-key=,
  =consult-preview-key= and the =:preview-key= of sources and passed as keyword
  argument to =consult--read=. See the example configurations in the manual.
- BREAKING: Remove the "." argument from  =consult-grep-args= and
  =consult-ripgrep-args=, since directories or files to search are appended by the
  command line builder. Take this change into account, when you use a customized
  version of those variables.
- =consult-grep=: Add support for grep and find over multiple files or directory.
  If the prefix argument DIR is a single C-u, prompt for comma separated
  directories or files to search recursively via =completing-read-multiple=.
- =consult-buffer= and =consult-isearch-history=: Align annotations dynamically
  depending on candidate width, instead of computing the alignment beforehand.
- Add the full path as =help-echo= property to abbreviated directory paths and
  project names. Enable =tooltip-mode= and hover with the mouse over the
  abbreviated directory path to see the full path.
- =consult-grep/find/etc=: Print first line of stderr output if command failed.

* Version 0.32 (2023-02-06)

- Bugfixes
- Deprecate the old key convention. Keys must now be strings valid according to
  =key-valid-p=. This changes affects the keys =consult-narrow-key=,
  =consult-widen-key=, =consult-preview-key= and the =:preview-key= of sources and
  passed as keyword argument to =consult--read=. See the example configurations in
  the manual.
- Add =consult-info= command (#634, #727).
- =consult-buffer=: Always select the first candidate when narrowing (#714).
- =consult-locate-args=: Remove =--existing=, which is not supported by =plocate= on
  Debian stable.
- =consult-ripgrep-args=: Add =--search-zip= option to automatically search through
  compressed files. This will allow you to search Elisp files bundled with your
  Emacs installation. Move to an Elisp library via =find-library=, then invoke
  =consult-ripgrep=.
- Drop obsolete =consult-apropos=. Alternatives: =describe-symbol= in combination
  with =embark-export=. See also =consult-info= and =consult-ripgrep= to search
  through info manuals and Elisp source code.
- Drop obsolete =consult-multi-occur=. Alternative: Built-in =multi-occur=,
  =multi-occur-in-matching-buffers= or =consult-line-multi=.
- Drop obsolete =consult-file-externally=. The command has been moved to Embark
  under the name =embark-open-externally=.

* Version 0.31 (2023-01-06)

- Version bump to update the Compat package dependency (29.1.0.1)

* Version 0.30 (2023-01-02)

- Bugfixes
- Drop Selectrum support
- Deprecate =consult-file-externally= in favor of =embark-open-externally=
- Deprecate =consult-multi-occur=. The =multi-occur= command should be improved
  upstream to take advantage of =completing-read-multiple=. Consult provides the
  command =consult-line-multi= as an alternative.
- =consult-history=: Use input as initial completion input

* Version 0.29 (2022-12-03)

- Bugfixes
- =consult-line-multi= has been rewritten completely. The candidates are computed
  on demand based on the input. This reduces startup speed greatly. The command
  behaves like =consult-grep=, but operates on buffers instead of files.
- Add =consult--source-file-register=, and make the registers available in
  =consult-buffer=. Registers are often used as quick access keys for files, e.g.,
  =(add-to-list 'register-alist '(?i file . "~/.emacs.d/init.el")))=.
- Remove obsolete =consult-line-point-placement=
- =consult-grep/find=: Always show directory in the prompt
- Add variable =consult-yank-rotate=, =consult-yank-from-kill-ring= rotates kill ring
- Emacs 29: =consult-register= supports =buffer= register type
- Emacs 29: Support =outline-search-function=
- Org 9.6: Support new =org-fold-core= API (both overlays and text-properties)
- Support abbreviated file names in =recentf-list=, see =recentf-filename-handler=.
- Deprecate =consult-apropos=

* Version 0.20 (2022-10-16)

- Bugfixes
- Allow =consult-*-args= to be a string, or a list of strings or expressions.
- Introduce face =consult-highlight-match= to highlight grep matches in the
  completion buffer.
- Highlight full matches in =consult-line=, =consult-outline=, =consult-*grep= and
  =consult-flymake=.
- Remove face =consult-preview-error=.
- Deprecate =consult-line-point-placement= in favor of more general
  =consult-point-placement=, which is also used by the =consult-*grep= commands.
- =consult-imenu=: Support imenu-after-jump-hook and non-default
  =imenu-default-goto-function=
- =consult-history=: Add support for history index variables, which are updated
  after selection.
- Deprecate support for Selectrum in favor of Vertico. If you use Selectrum
  consider switching to Vertico, Icomplete, Mct or default completion.

* Version 0.19 (2022-09-09)

- Bugfixes
- Allow =consult-flymake= to work across all buffers in a project
- Remove deprecated =consult-completing-read-multiple=
- =consult-grep/git-grep/ripgrep=: Add =--fixed-strings= support
- =consult-grep=: Respect =grep-find-ignored-directories/files=
- =consult-org-heading=: Add tags to completion candidates
- Add =consult-preview-excluded-files=
- =consult-themes=: Support regexps

* Version 0.18 (2022-05-25)

- Bugfixes
- Removed obsolete =consult-recent-file-filter= and =consult-preview-excluded-hooks=
- Deprecate =consult-completing-read-multiple=. See #567 for details.
- Add =consult--source-modified-buffer=

* Version 0.17 (2022-04-22)

- Bugfixes
- Drop Emacs 26 support.
- =consult-goto-line=: Use =goto-line-history= on Emacs 28.
- =consult-customize=: Evaluate settings at runtime. This change makes it possible
  to use =thing-at-point= to overwrite the =:initial= and =:add-history= settings.
- Rename =consult--read-config= to =consult--customize-alist= and change the format.
  The configuration is an alist. The car must be a command symbol. The cdr must
  be a plist of keys and expressions, where the expressions evaluate to the
  actual configuration values.
- Mode hooks in previewed file buffers are delayed. The buffer is only fully
  initialized when leaving the minibuffer for recursive editing.
- Increase =consult-preview-raw-size=.
- Replace =consult-preview-excluded-hooks= by =consult-preview-allowed-hooks=.
- Add =consult-preview-variables= to bind variables for file preview.
- BREAKING API CHANGE of =consult--read=, =consult--prompt=, =consult--multi=: The
  state function protocol changed. The function gets notified of more completion
  state changes. See the docstring of =consult--with-preview= for details.
- BREAKING API CHANGE of =consult--read=: The lookup function protocol changed.
  The function must now accept four or more arguments.
- Remove unused =consult-preview-map=.
- Remove unnecessary =consult-recent-file-filter=. Use =recentf-exclude= instead.
- =consult--multi= sources can have a =:new= function to create candidates.
  When narrowed to a source, new candidates will be created by calling the
  respective =:new= function.
- =consult--multi= returns =:match= information. =:match= can be nil, t, or new,
  depending on if the candidate does not exist, exists or has been created.
- =consult-locate= treats the input literally to take advantage of the db index.

* Version 0.16 (2022-03-08)

- Bugfixes
- Deprecate =consult-project-root-function= in favor of =consult-project-function=.
- Preconfigure =consult-project-function= with a default function based
  on project.el.
- Add =consult-project-buffer=, a variant of =consult-buffer= restricted to the
  current project.
- Add =consult-register-prefix= option.
- Introduced a generic and extensible =consult-register= implementation.
- Lazy marker creation in =consult-line/outline= (performance improvements)

* Version 0.15 (2022-01-31)

- Bugfixes
- =consult-xref=: Prettify the group titles, use =xref--group-name-for-display=
  if available.
- =consult-focus-lines=: Thanks to @jdtsmith, the command is much faster and
  actually useable in large files.
- Added Mct integration, auto refreshing of asynchronous Consult commands.

* Version 0.14 (2021-12-31)

- Bugfixes
- Add =consult-recent-file-filter=
- Rename =consult--source-(project-)file= to =consult-source-(project-)recent-file=
- =consult-keep-lines= makes read-only buffers temporarily writable if confirmed

* Version 0.13 (2021-11-12)

- Bugfixes
- =consult-register=: Add support for file register values.
- Rename =consult-isearch= to =consult-isearch-history=. The command is a history
  browsing command and not a replacement for Isearch.
- =consult-grep= support -[ABC] grep options
- Add =consult-grep-context= face

* Version 0.12 (2021-10-11)

- Bugfixes
- Removed obsolete =consult-project-imenu= and =consult-x-command= variables
- =consult-grep=: Use ~--null~ argument to support file names with colons

* Version 0.11 (2021-08-18)

- Bugfixes only

* Version 0.10 (2021-08-11)

- =consult-mark=, =consult-global-mark=: Add optional marker list argument
- =consult-completing-read-multiple=: New function
- Rename =consult-project-imenu= to =consult-imenu-multi=
- Add =consult-line-multi= to search multiple buffers
- Removed obsolete =consult-yank=, =consult-async-default-split=, =consult-config=
- =consult-ripgrep=: Use =--smart-case=
- =consult-grep/git-grep=: Use =--ignore-case=
- Deprecate =consult-<cmd>-command= in favor of =consult-<cmd>-config.=
- =consult-find=: Use regular expressions instead of globbing/wildcards by default.
  Due to the changes to =consult-find= it is not possible anymore to configure
  =fd= as backend for =consult-find=. A replacement is documented in the wiki.
- =consult-find/locate/man=: Add highlighting to the matching file/man page names.
- =consult-grep/git-grep/ripgrep/find/locate=: Add support for multiple unordered
  patterns. Each of the input patterns must be matched. For example,
  =consult-find= transforms the input "first second third" to "first -and second
  -and third".
- =consult-grep/git-grep/ripgrep=: Compute the highlighting based on the input,
  instead of relying on the ANSI-escaped output. This works better with multiple
  patterns, but may occasionally produce false highlighting.
- Deprecate =consult-x-command= configuration variables in favor of =consult-x-args=.
  The variables have been renamed since the configuration format changed.
- =consult-async-split-styles-alist=: Remove the =space= splitting style, since
  it has been obsoleted by the support for multiple unordered patterns.

* Version 0.9 (2021-06-22)

- Add =consult-preview-excluded-hooks=
- =consult--read/consult--prompt=: Add =:inherit-input-method= argument
- Add debouncing support for preview

* Version 0.8 (2021-05-30)

- Async commands: Do not fix vertical height in Selectrum.
- =consult-imenu=: Deduplicate items (some imenu backends generate duplicates).
- =consult-org-heading=: Deduplicate items.
- =consult-buffer-filter=: Hide more buffers.
- =consult-line=: Matching line preview overlay only in the selected window.
- =consult-yank/completion-in-region=: Insertion preview only in selected window.
- =consult-yank=: Rename to =consult-yank-from-kill-ring= (Emacs 28 naming).
- =consult-yank= commands: =delete-selection-mode= support, added properties.
- =consult-preview-at-point=, =consult-preview-at-point-mode=: New command and
  minor mode to preview candidate at point in =*Completions*= buffer.
- Add =consult-async-split-style= and =consult-async-split-styles-alist=.
- =consult-async-default-split=: Obsoleted in favor of =consult-async-split-style=.
- Deprecate =consult-config= in favor of new =consult-customize= macro.
- =consult-buffer=: Enable previews for files and bookmarks by default.
- =consult-buffer=/=consult--multi=: Add support for =:preview-key= per source.
- =consult-buffer=: Push visible buffers down in the buffer list.
- =consult-flycheck=: Moved to separate repository prior to ELPA submission.
- Submitted Consult to ELPA.

* Version 0.7 (2021-04-29)

- Bugfixes
- =consult-buffer=: Respect =confirm-nonexistent-file-or-buffer=
- =consult-widen-key=: Change default setting to twice the =consult-narrow-key=
- =consult-flycheck=: Sort errors first
- Added support for the Vertico completion system
- Consult adds disambiguation suffixes as suffix instead of as prefix now
  for the commands =consult-line=, =consult-buffer=, etc.
  This enables support for the =basic= completion style and TAB completion.
- =consult--read=: The =:title= function must accept two arguments now,
  the candidate string and a flag. If the flag is nil, the function should
  return the title of the candidate, otherwise the function should return the
  transformed candidate.
- =consult-grep= and related commands: Strip the file name if grouping is used.
- =consult-find/grep=: Ensure that the commands work with Tramp
- =consult-outline=: Add narrowing
- Added =consult-org-heading= and =consult-org-agenda=
- =consult-line=: Highlight visual line during jump preview
- =consult-line=: Start search at current line, add configuration variable
  =consult-start-from-top=. The starting point can be toggled by the prefix
  argument =C-u=.

* Version 0.6 (2021-03-02)

- Bugfixes
- =consult-keep/focus-lines=: Align behavior on regions with built-in =keep-lines=.
- =consult-buffer=: Enable file sources only when =recentf-mode= is enabled
- =consult--multi=: Add =:default= flag, use flag for =consult--source-buffer=
- Add =consult-grep-max-columns= to prevent performance issues for long lines
- Add =consult-fontify-preserve= customization variable
- =consult-line=: Quits Isearch, when started from an Isearch session
- =consult-register-load=: Align prefix argument handling with =insert-register=
- Rename =consult-error= to =consult-compile-error=
- =consult-compile-error=: Allow calling the command from any buffer,
  use the errors from all compilation buffers related to the current buffer.
- =consult-man=: Handle aggregated entries returned by mandoc
- =consult-completion-in-region=: Added preview and =consult-preview-region= face
- Added =consult-completion-in-region-styles= customization variable
- Added =consult-xref=. The function can be set as =xref-show-xrefs-function=
  and =xref-show-definitions-function=.
- Added support for the candidate grouping function =x-group-function=

* Version 0.5 (2021-02-09)

- Bugfixes
- =consult-keep/focus-lines=: If region is active, operate only on the region.
- =consult-register-format=: Do not truncate register strings.
- =consult-buffer= multi sources: Ensure that original buffer is
  shown, when the currently selected source does not perform preview.
- Add =consult-preview-raw-size=
- Expose preview functionality for multi-source bookmarks/files
- Multi sources: Add =:enabled=, =:state= and =:action= fields
- =consult-imenu=: Add faces depending on item types

* Version 0.4 (2021-02-01)

- Bugfixes
- Introduce multi sources, reimplement =consult-buffer= with multi sources
- =consult-isearch=: Add preview highlighting
- =consult-line=: Use =isearch-string= when invoked from running isearch

* Version 0.3 (2021-01-28)

- Bugfixes
- New command =consult-isearch=
- New functions =consult-register-format=, =consult-register-window=,
  removed =consult-register-preview=

* Version 0.2 (2021-01-16)

- Initial stable release
