point. It can be used by major modes to provide mode-specific
completion tables (@pxref{Major Mode Conventions}).
-When the command @code{completion-at-point} runs, it calls the functions in the
-list one by one, without any argument. Each function should return @code{nil}
-unless it can and wants to take responsibility for the completion data for the
-text at point. Otherwise it should return a list of the form
+When the command @code{completion-at-point} runs, it calls the
+functions in the list one by one, without any argument. Each function
+should return @code{nil} unless it can and wants to take
+responsibility for the completion data for the text at point.
+Otherwise it should return a list of the following form:
@example
(@var{start} @var{end} @var{collection} . @var{props})
reporting a completion failure.
@end table
-The functions on this hook should generally return quickly, since they may be
-called very often (e.g., from @code{post-command-hook}).
+The functions on this hook should generally return quickly, since they
+may be called very often (e.g., from @code{post-command-hook}).
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}
(my-make-completions)))))
@end smallexample
-Additionally, the @var{collection} should generally not be pre-filtered based
-on the current text between @var{start} and @var{end}, because that is the
-responsibility of the caller of @code{completion-at-point-functions} to do that
-according to the completion styles it decides to use.
+Additionally, the @var{collection} should generally not be
+pre-filtered based on the current text between @var{start} and
+@var{end}, because that is the responsibility of the caller of
+@code{completion-at-point-functions} to do that according to the
+completion styles it decides to use.
A function in @code{completion-at-point-functions} may also return a
function instead of a list as described above. In that case, that
As is the case with most hooks, the functions are responsible for
preserving things like point and current buffer.
-NOTE: These functions should be cheap to run since they're sometimes run from
-`post-command-hook' and they should ideally only choose which kind of
-completion table to use and not pre-filter it based on the current text between
-START and END (e.g. that would not obey `completion-styles').")
+NOTE: These functions should be cheap to run since they're sometimes
+run from `post-command-hook'; and they should ideally only choose
+which kind of completion table to use, and not pre-filter it based
+on the current text between START and END (e.g., they should not
+obey `completion-styles').")
(defvar completion--capf-misbehave-funs nil
"List of functions found on `completion-at-point-functions' that misbehave.