Homepage: https://elpa.gnu.org/packages/aggressive-completion.html
Author: Tassilo Horn
Updated:
Automatic minibuffer completion
Aggressive completion mode (`aggressive-completion-mode') is a minor mode
which automatically completes for you after a short delay
(`aggressive-completion-delay') and shows all possible completions using the
standard completion help (unless the number of possible completions exceeds
`aggressive-completion-max-shown-completions' or
`aggressive-completion-auto-completion-help' is set to nil).
Automatic completion is done after all commands in
`aggressive-completion-auto-complete-commands'. The function doing
auto-completion is defined by `aggressive-completion-auto-complete-fn' which
defaults to `minibuffer-complete'.
Aggressive completion can be toggled using
`aggressive-completion-toggle-auto-complete' (bound to `M-t' by default)
which is especially useful when trying to find a not yet existing file or
switch to a new buffer.
You can switch from minibuffer to *Completions* buffer and back again using
`aggressive-completion-switch-to-completions' (bound to `M-c' by default).
All keys bound to this command in `aggressive-completion-minibuffer-map'
will be bound to `other-window' in `completion-list-mode-map' so that those
keys act as switch-back-and-forth commands.
Aggressive completion can be used together, in theory, with other completion
UIs. Using the following configuration, it works quite well with the
vertico package:
Disable completion help since vertico shows the candidates anyhow.
(setq aggressive-completion-auto-completion-help nil)
A command which just expands the common part without selecting a candidate.
(defun th/vertico-complete ()
(interactive)
(minibuffer-complete)
(when vertico--count-ov ;; Only if vertico is active.
(vertico--exhibit)))
Use that for auto-completion.
(setq aggressive-completion-auto-complete-fn #'th/vertico-complete)
The inline help messages like "Next char not uniqe" make point bump to the
right because of vertico's overlays which is a bit annoying. And since you
already see your candidates anyhow, the messages aren't important anyhow.
(setq completion-show-inline-help nil)