Function: completion-at-point

completion-at-point is an interactive and byte-compiled function defined in minibuffer.el.gz.

Signature

(completion-at-point)

Documentation

Perform completion on the text around point.

The completion method is determined by completion-at-point-functions.

Probably introduced at or before Emacs version 23.2.

Key Bindings

Aliases

comint-dynamic-complete (obsolete since 24.1) nxml-complete (obsolete since 26.1) evil-ex-completion (obsolete since 1.15.0) meta-complete-symbol (obsolete since 24.1) mh-letter-complete eshell-pcomplete (obsolete since 27.1) bibtex-complete (obsolete since 24.1) pascal-complete-word (obsolete since 24.1) makefile-complete (obsolete since 24.1) erc-complete-word (obsolete since 24.1)

Source Code

;; Defined in /usr/src/emacs/lisp/minibuffer.el.gz
(defun completion-at-point ()
  "Perform completion 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
                               #'completion--capf-wrapper 'all)))
    (pcase res
      (`(,_ . ,(and (pred functionp) f)) (funcall f))
      (`(,hookfun . (,start ,end ,collection . ,plist))
       (unless (markerp start) (setq start (copy-marker start)))
       (let* ((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))))))
         (completion-in-region start end collection
                               (plist-get plist :predicate))))
      ;; Maybe completion already happened and the function returned t.
      (_
       (when (cdr res)
         (message "Warning: %S failed to return valid completion data!"
                  (car res)))
       (cdr res)))))