1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-03 08:30:09 +00:00

Discuss using lazy completion tables for inline completion.

This commit is contained in:
Daniel Colascione 2014-03-30 19:25:02 -07:00
parent 294b2b0928
commit d94c875df3
2 changed files with 32 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2014-03-31 Daniel Colascione <dancol@dancol.org>
* minibuf.texi (Completion in Buffers): Discuss using lazy
completion tables for inline completion.
2014-03-28 Glenn Morris <rgm@gnu.org>
* os.texi (Terminal-Specific): Mention term-file-aliases.

View File

@ -1873,11 +1873,34 @@ next function in @code{completion-at-point-functions} instead of
reporting a completion failure.
@end table
Supplying a function for @var{collection} is strongly recommended if
generating the list of completions is an expensive operation. Emacs
may internally call functions in @code{completion-at-point-functions}
many times, but care about the value of @var{collection} for only some
of these calls. By supplying a function for @var{collection}, Emacs
can defer generating completions until necessary. You can use
@var{completion-table-dynamic} to create a wrapper function:
@smallexample
;; Avoid this pattern.
(let ((beg ...) (end ...) (my-completions (my-make-completions)))
(list beg end my-completions))
;; Use this instead.
(let ((beg ...) (end ...))
(list beg
end
(completion-table-dynamic
(lambda (_)
(my-make-completions)))))
@end smallexample
A function in @code{completion-at-point-functions} may also return a
function. In that case, that returned function is called, with no
argument, and it is entirely responsible for performing the
completion. We discourage this usage; it is intended to help convert
old code to using @code{completion-at-point}.
function instead of a list as described above. In that case, that
returned function is called, with no argument, and it is entirely
responsible for performing the completion. We discourage this usage;
it is intended to help convert old code to using
@code{completion-at-point}.
The first function in @code{completion-at-point-functions} to return a
non-@code{nil} value is used by @code{completion-at-point}. The