Function: completion-help-at-point
completion-help-at-point is an interactive and byte-compiled function
defined in minibuffer.el.gz.
Signature
(completion-help-at-point)
Documentation
Display the completions on the text around point.
The completion method is determined by completion-at-point-functions.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/minibuffer.el.gz
(defun completion-help-at-point ()
"Display the completions on the text around point.
The completion method is determined by `completion-at-point-functions'."
(interactive)
(let ((res (run-hook-wrapped 'completion-at-point-functions
;; Ignore misbehaving functions.
#'completion--capf-wrapper 'optimist)))
(pcase res
(`(,_ . ,(and (pred functionp) f))
(message "Don't know how to show completions for %S" f))
(`(,hookfun . (,start ,end ,collection . ,plist))
(unless (markerp start) (setq start (copy-marker start)))
(let* ((minibuffer-completion-table collection)
(minibuffer-completion-predicate (plist-get plist :predicate))
(completion-extra-properties plist)
(completion-in-region-mode-predicate
(lambda ()
;; We're still in the same completion field.
(let ((newstart (car-safe (funcall hookfun))))
(and newstart (= newstart start))))))
;; FIXME: We should somehow (ab)use completion-in-region-function or
;; introduce a corresponding hook (plus another for word-completion,
;; and another for force-completion, maybe?).
(setq completion-in-region--data
`(,start ,(copy-marker end t) ,collection
,(plist-get plist :predicate)))
(completion-in-region-mode 1)
(minibuffer-completion-help start end)))
(`(,hookfun . ,_)
;; The hook function already performed completion :-(
;; Not much we can do at this point.
(message "%s already performed completion!" hookfun)
nil)
(_ (message "Nothing to complete at point")))))