Function: completion-flex-try-completion

completion-flex-try-completion is a byte-compiled function defined in minibuffer.el.gz.

Signature

(completion-flex-try-completion STRING TABLE PRED POINT)

Documentation

Try to flex-complete STRING in TABLE given PRED and POINT.

Source Code

;; Defined in /usr/src/emacs/lisp/minibuffer.el.gz
(cl-defun completion-flex-try-completion (string table pred point)
  "Try to flex-complete STRING in TABLE given PRED and POINT."
  (when (and completion-flex-nospace (string-search " " string))
    (cl-return-from completion-flex-try-completion))
  (pcase-let* ((`(,all ,pattern-str ,prefix ,suffix)
                (completion--flex-all-completions-1 string table pred point))
               (pcm-pattern
                (cons
                 'prefix
                 (cl-loop with point-idx = (1- (- point (length prefix)))
                          for x across pattern-str for i from 0
                          collect (char-to-string x)
                          collect (if (eq i point-idx)
                                      'point 'any)))))
    (if minibuffer-completing-file-name
        (setq all (completion-pcm--filename-try-filter all)))
    ;; Try some "merging", meaning add as much as possible to the
    ;; user's pattern without losing any possible matches in `all'.
    ;; i.e this will augment "cfi" to "config" if all candidates
    ;; contain the substring "config".  FIXME: this still won't
    ;; augment "foo" to "froo" when matching "frodo" and
    ;; "farfromsober".
    (completion-pcm--merge-try pcm-pattern all prefix suffix)))