This package provides an async-completing-read function that
recognizes completion table with an async property in their metadata
and treats the specially. The value associated to the async property
should be a list of an executable program and arguments for it. This
program is started asynchronously and its output collected in a
buffer. The completion table can access the output buffer by calling
its predicate on the symbol output-buffer.
A useful example of a class of async completion tables is provided:
(acr-lines-from-process prog args) returns a completion table for
which the completion candidates are lines the standard output of prog
run with arguments args.
As an example, once you have evaluated:
(setq completing-read-function #'async-completing-read)you can prompt from any file found in the part of the directory tree rooted at the current directory with the expression:
(completing-read "File: " (acr-lines-from-process "find" "."))Note that async-completing-read can handle normal non-async completion
tables too, so you can just “leave it on”, that is use it as the value of
completing-read-function all the time.
acr-completing-read-function-
async-completing-readreally just handles logistics of starting the process and passing the output buffer to the completion table, it delegates all actual prompting the user and reading input toacr-completing-read-function, which defaults to whatevercompleting-read-functionwas at the time this library was loaded. acr-refresh-completion-ui-
set this to a function that refshes the display of your completion
UI. The default value,
acr-refresh-icomplete, obviously is meant for Icomplete. Note this variable is just about showing the completions: the completions do get updated asynchronously anyway, and as soon as you typed anything you’d pick the newly available ones up. acr-refresh-completion-delay-
how often to call
acr-refresh-completion-ui, defaults to 0.3 seconds.