summaryrefslogtreecommitdiff
path: root/lisp/minibuffer.el
diff options
context:
space:
mode:
authorThierry Volpiatto <thierry.volpiatto@gmail.com>2019-11-21 20:41:19 +0100
committerThierry Volpiatto <thierry.volpiatto@gmail.com>2019-11-21 20:48:17 +0100
commit5a62c4b49ca1ac45d576f55d266750b7d1d6668a (patch)
tree2d90d6646fdab44987a3a7734d94cfa71af63c68 /lisp/minibuffer.el
parent035931777bd89b939436fd1d8a2b8d5a80ede095 (diff)
downloademacs-5a62c4b49ca1ac45d576f55d266750b7d1d6668a.tar.gz
Add new variable to prevent flex completion style
matching spaces. This allows flex style working smoothly with other styles like helm using spaces. * lisp/minibuffer.el (completion-flex-nospace): New user var. (completion-flex-try-completion): Use it. (completion-flex-all-completions): Same.
Diffstat (limited to 'lisp/minibuffer.el')
-rw-r--r--lisp/minibuffer.el47
1 files changed, 27 insertions, 20 deletions
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index 6e72eb73f99..ee3d0095a9a 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -3494,6 +3494,11 @@ that is non-nil."
;;; "flex" completion, also known as flx/fuzzy/scatter completion
;; Completes "foo" to "frodo" and "farfromsober"
+(defcustom completion-flex-nospace nil
+ "Make flex style fail when a space is found in pattern."
+ :version "27.1"
+ :type 'boolean)
+
(put 'flex 'completion--adjust-metadata 'completion--flex-adjust-metadata)
(defun completion--flex-adjust-metadata (metadata)
@@ -3539,29 +3544,31 @@ which is at the core of flex logic. The extra
(defun completion-flex-try-completion (string table pred point)
"Try to flex-complete STRING in TABLE given PRED and POINT."
- (pcase-let ((`(,all ,pattern ,prefix ,suffix ,_carbounds)
- (completion-substring--all-completions
- string table pred point
- #'completion-flex--make-flex-pattern)))
- (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 pattern all prefix suffix)))
+ (unless (and completion-flex-nospace (string-match-p " " string))
+ (pcase-let ((`(,all ,pattern ,prefix ,suffix ,_carbounds)
+ (completion-substring--all-completions
+ string table pred point
+ #'completion-flex--make-flex-pattern)))
+ (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 pattern all prefix suffix))))
(defun completion-flex-all-completions (string table pred point)
"Get flex-completions of STRING in TABLE, given PRED and POINT."
- (pcase-let ((`(,all ,pattern ,prefix ,_suffix ,_carbounds)
- (completion-substring--all-completions
- string table pred point
- #'completion-flex--make-flex-pattern)))
- (when all
- (nconc (completion-pcm--hilit-commonality pattern all)
- (length prefix)))))
+ (unless (and completion-flex-nospace (string-match-p " " string))
+ (pcase-let ((`(,all ,pattern ,prefix ,_suffix ,_carbounds)
+ (completion-substring--all-completions
+ string table pred point
+ #'completion-flex--make-flex-pattern)))
+ (when all
+ (nconc (completion-pcm--hilit-commonality pattern all)
+ (length prefix))))))
;; Initials completion
;; Complete /ums to /usr/monnier/src or lch to list-command-history.