- New features:
consult--multi
: Add support for asynchronous sources.consult-man
: Add preview.
- BREAKING CHANGE: New async API
- Async functions must have the uniform curried form
(lambda (sink) (lambda (action) ...)
and are composed withconsult--async-pipeline
. See the docstring ofconsult--async-pipeline
for details. consult--read
: New:async-wrap
keyword argument.consult--multi
: Add support for:async
sources.consult--async-min-input
: New async function which enforces a minimum input length. The input length check has been removed fromconsult--async-split
.consult--async-transform
: Macro converted to function.consult--process-collection
: New function replacingconsult--async-command
. The function accepts keyword arguments to customize the pipeline.consult--dynamic-collection
: The function accepts more keyword arguments to customize the pipeline.consult--async-refresh-timer
andconsult--async-refresh-immediate
: Replaced byconsult--async-refresh
with aDELAY
argument.consult--async-split-thingatpt
andconsult--async-split-initial
: Removed sinceconsult--read
automatically inserts the splitter prefix if needed.
- Async functions must have the uniform curried form
- Minor changes:
- Remove obsolete
consult-yank-rotate
. - Add customizable variable
consult-async-indicator
. consult-completion-in-region
: When inside minibuffer, use minibuffer content as prompt.
- Remove obsolete
- Require Emacs 28.1.
consult-grep
,consult-find
and similar commands: Ask for project first, when invoked with double prefix argumentC-u C-u
.- Deprecate
consult-yank-rotate
in favor ofyank-from-kill-ring-rotate
. consult-grep-max-columns
: Support valuenil
to disable truncation.consult-line
: Enforce global completion style settings for compatibility with buffer-local completion style settings, which may be used by Corfu.- Support the value 0 for
consult-async-min-input
. - Remove special
org-fold
code. Setorg-fold-core-style
tooverlays
if unfolding in Org files does not work for you. consult-info
: Support sub files.consult-buffer
,consult-project-buffer
: Add sources for known project roots.consult--multi
: Support multiple narrow keys per source. Used by the project buffer and project recent file source.consult--async-sink
: The new actioncancel
was added to the async protocol.consult--read
: Add new keyword argument:initial-narrow
.
consult-preview-excluded-buffers
: New customization variable.consult-fd
: Support multiple paths.- Bump Compat dependency to Compat 30.
- Emacs 30 bug fix: Ensure that font locking is enabled when previewing files.
consult-preview-allowed-hooks
: Global minor modes, which should be enabled during preview, can be added to this list. See the README for examples.consult-xref
: Bug fix: Do not error when project root directory is nil.consult-fd
: Bug fix: Avoid confusion of input pattern with options by prefixing the input pattern with--and
.consult--buffer-sort-visibility
: Bug fix: Only add current buffer to sorted list, if already present in the original list.
consult-xref
: Compatibility with xref.el in Emacs 30.consult-grep
(and similar): Preserve files which are already open literally and do not reopen them in normal mode.consult-preview-allowed-hooks
: Run delayed mode hooks listed in this variable during preview.consult--buffer-query
: Add buffer-list keyword argument.
- Bugfix
consult-buffer
: Handle buffer renaming during minibuffer completion gracefully, by attaching the actual buffer objects to the completion candidate strings. - Bugfix
consult-register
: Ignore marker registers pointing to dead buffers.
- Bugfix: File preview: Ensure that binary files are not previewed partially.
Otherwise
pdf-view-mode
may observe corrupted PDF files. consult--async-refresh-timer
: Optimize timer reuse and efficiency. This change improves the performance of commands likeconsult-ripgrep
for small values ofconsult-async-refresh-delay
.consult-completion-in-region
: Remove:cycle-threshold
and:completion-styles
customization options.
consult-bookmark-narrow
: More flexible grouping which supports multiple bookmark handlers per group.- Bugfix: Ensure that preview is always executed in a non-minibuffer window.
- Bugfix: File preview: Do not preview
hexl-mode
buffers. - Bugfix: File preview: use
error-message-string
to access error string. - Bugfix: Buffer preview: Retrieve original window correctly.
- Bugfix: Fix
consult-global-mark
forembark-export
.
consult-buffer
: Bugfix. Ensure that null completion works properly.- File preview: Add indication if previewed file got truncated.
- Bugfixes:
consult-xref
: Do not error for an empty location list.consult--read
: Catch null completion if require-match is non-nil.consult--multi
: Ensure that :new action is invoked on visible source.
- File preview: Check for long lines when previewing files partially.
- Use
minibuffer-local-filename-syntax
andread-file-name-completion-ignore-case
for directory prompt of theconsult-grep
andconsult--find
family of commands. - Remove obsolete variables
consult-preview-max-size
andconsult-preview-raw-size
.
- Bugfixes.
- Preview large files partially. Add new customization variables
consult-preview-partial-chunk
andconsult-preview-partial-limit
. This new feature is experimental. Please report any issues you observe. - Obsoleted
consult-preview-max-size
andconsult-preview-raw-size
. consult-buffer-other-tab
: New command.consult-fd
: New command based on the fastfd/fdfind
search utility.consult-outline
: New prefix argument to specify initial narrowing level.consult-org-heading
: Specify categoryorg-heading
such that Embark provides appropriate Org heading actions.consult-org-heading
: Add annotation.consult-locate
: Split input into multiple words.- Remove unreliable
consult--maybe-recenter
. - Save input history even when using
embark-export
or when aborting from a command via C-g. This change affects commands likeconsult-line
andconsult-grep
. - Unify history of
consult-line
,consult-keep-lines
andconsult-focus-lines
.
- Bugfixes.
consult--read
now accepts programmable completion tables as argument, e.g.,completion-table-dynamic
orcompletion--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 withcursor-highlight-mark
. - Change calling convention of
consult-focus-lines
andconsult-keep-lines
. - The regexps in
consult-buffer-filter
are matched case sensitively now. Similarly, theINCLUDE
andEXCLUDE
arguments ofconsult--buffer-query
are also case sensitive. - Do not preview remote files by default, see
consult-preview-excluded-files
. - Use
consult--maybe-recenter
instead ofrecenter
inconsult-after-jump-hook
. consult-goto-line
: Supportline:column
input.
- Bugfixes.
consult-org-heading
: Support tag inheritance.- Use pure
consult--fast-abbreviate-file-name
function to abbreviate file names inconsult-buffer
andconsult-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
andconsult--source-project-recent-file-hidden
. Set the buffer sources ofconsult-project
toconsult--source-project-buffer
andconsult--source-project-recent-file
to ease customization. consult-buffer
: Explicitly savewindow-next-buffers
andwindow-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.
- 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 keysconsult-narrow-key
,consult-widen-key
,consult-preview-key
and the:preview-key
of sources and passed as keyword argument toconsult--read
. See the example configurations in the manual. - BREAKING: Remove the “.” argument from
consult-grep-args
andconsult-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 viacompleting-read-multiple
.consult-buffer
andconsult-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. Enabletooltip-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.
- Bugfixes
- Deprecate the old key convention. Keys must now be strings valid according to
key-valid-p
. This changes affects the keysconsult-narrow-key
,consult-widen-key
,consult-preview-key
and the:preview-key
of sources and passed as keyword argument toconsult--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 byplocate
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 viafind-library
, then invokeconsult-ripgrep
.- Drop obsolete
consult-apropos
. Alternatives:describe-symbol
in combination withembark-export
. See alsoconsult-info
andconsult-ripgrep
to search through info manuals and Elisp source code. - Drop obsolete
consult-multi-occur
. Alternative: Built-inmulti-occur
,multi-occur-in-matching-buffers
orconsult-line-multi
. - Drop obsolete
consult-file-externally
. The command has been moved to Embark under the nameembark-open-externally
.
- Version bump to update the Compat package dependency (29.1.0.1)
- Bugfixes
- Drop Selectrum support
- Deprecate
consult-file-externally
in favor ofembark-open-externally
- Deprecate
consult-multi-occur
. Themulti-occur
command should be improved upstream to take advantage ofcompleting-read-multiple
. Consult provides the commandconsult-line-multi
as an alternative. consult-history
: Use input as initial completion input
- 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 likeconsult-grep
, but operates on buffers instead of files.- Add
consult--source-file-register
, and make the registers available inconsult-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
supportsbuffer
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
, seerecentf-filename-handler
. - Deprecate
consult-apropos
- 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
andconsult-flymake
. - Remove face
consult-preview-error
. - Deprecate
consult-line-point-placement
in favor of more generalconsult-point-placement
, which is also used by theconsult-*grep
commands. consult-imenu
: Support imenu-after-jump-hook and non-defaultimenu-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.
- 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
supportconsult-grep
: Respectgrep-find-ignored-directories/files
consult-org-heading
: Add tags to completion candidates- Add
consult-preview-excluded-files
consult-themes
: Support regexps
- Bugfixes
- Removed obsolete
consult-recent-file-filter
andconsult-preview-excluded-hooks
- Deprecate
consult-completing-read-multiple
. See #567 for details. - Add
consult--source-modified-buffer
- Bugfixes
- Drop Emacs 26 support.
consult-goto-line
: Usegoto-line-history
on Emacs 28.consult-customize
: Evaluate settings at runtime. This change makes it possible to usething-at-point
to overwrite the:initial
and:add-history
settings.- Rename
consult--read-config
toconsult--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
byconsult-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 ofconsult--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
. Userecentf-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.
- Bugfixes
- Deprecate
consult-project-root-function
in favor ofconsult-project-function
. - Preconfigure
consult-project-function
with a default function based on project.el. - Add
consult-project-buffer
, a variant ofconsult-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)
- Bugfixes
consult-xref
: Prettify the group titles, usexref--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.
- Bugfixes
- Add
consult-recent-file-filter
- Rename
consult--source-(project-)file
toconsult-source-(project-)recent-file
consult-keep-lines
makes read-only buffers temporarily writable if confirmed
- Bugfixes
consult-register
: Add support for file register values.- Rename
consult-isearch
toconsult-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
- Bugfixes
- Removed obsolete
consult-project-imenu
andconsult-x-command
variables consult-grep
: Use--null
argument to support file names with colons
- Bugfixes only
consult-mark
,consult-global-mark
: Add optional marker list argumentconsult-completing-read-multiple
: New function- Rename
consult-project-imenu
toconsult-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 ofconsult-<cmd>-config.
consult-find
: Use regular expressions instead of globbing/wildcards by default. Due to the changes toconsult-find
it is not possible anymore to configurefd
as backend forconsult-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 ofconsult-x-args
. The variables have been renamed since the configuration format changed. consult-async-split-styles-alist
: Remove thespace
splitting style, since it has been obsoleted by the support for multiple unordered patterns.
- Add
consult-preview-excluded-hooks
consult--read/consult--prompt
: Add:inherit-input-method
argument- Add debouncing support for preview
- 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 toconsult-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
andconsult-async-split-styles-alist
. consult-async-default-split
: Obsoleted in favor ofconsult-async-split-style
.- Deprecate
consult-config
in favor of newconsult-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.
- Bugfixes
consult-buffer
: Respectconfirm-nonexistent-file-or-buffer
consult-widen-key
: Change default setting to twice theconsult-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 thebasic
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 Trampconsult-outline
: Add narrowing- Added
consult-org-heading
andconsult-org-agenda
consult-line
: Highlight visual line during jump previewconsult-line
: Start search at current line, add configuration variableconsult-start-from-top
. The starting point can be toggled by the prefix argumentC-u
.
- Bugfixes
consult-keep/focus-lines
: Align behavior on regions with built-inkeep-lines
.consult-buffer
: Enable file sources only whenrecentf-mode
is enabledconsult--multi
: Add:default
flag, use flag forconsult--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 sessionconsult-register-load
: Align prefix argument handling withinsert-register
- Rename
consult-error
toconsult-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 mandocconsult-completion-in-region
: Added preview andconsult-preview-region
face- Added
consult-completion-in-region-styles
customization variable - Added
consult-xref
. The function can be set asxref-show-xrefs-function
andxref-show-definitions-function
. - Added support for the candidate grouping function
x-group-function
- 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
- Bugfixes
- Introduce multi sources, reimplement
consult-buffer
with multi sources consult-isearch
: Add preview highlightingconsult-line
: Useisearch-string
when invoked from running isearch
- Bugfixes
- New command
consult-isearch
- New functions
consult-register-format
,consult-register-window
, removedconsult-register-preview
- Initial stable release