aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/minibuffer.el2
-rw-r--r--test/lisp/minibuffer-tests.el32
2 files changed, 33 insertions, 1 deletions
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index f13f1fa7984..26861de87b0 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -392,7 +392,7 @@ obeys predicates."
392 (and (funcall pred1 x) (funcall pred2 x))))) 392 (and (funcall pred1 x) (funcall pred2 x)))))
393 ;; If completion failed and we're not applying pred1 strictly, try 393 ;; If completion failed and we're not applying pred1 strictly, try
394 ;; again without pred1. 394 ;; again without pred1.
395 (and (not strict) pred1 pred2 395 (and (not strict) pred1
396 (complete-with-action action table string pred2)))))) 396 (complete-with-action action table string pred2))))))
397 397
398(defun completion-table-in-turn (&rest tables) 398(defun completion-table-in-turn (&rest tables)
diff --git a/test/lisp/minibuffer-tests.el b/test/lisp/minibuffer-tests.el
index c27b338f7f3..2d2ac85e3ff 100644
--- a/test/lisp/minibuffer-tests.el
+++ b/test/lisp/minibuffer-tests.el
@@ -42,5 +42,37 @@
42 (should (equal (buffer-string) 42 (should (equal (buffer-string)
43 "test: ")))))) 43 "test: "))))))
44 44
45(ert-deftest completion-table-with-predicate-test ()
46 (let ((full-collection
47 '("apple" ; Has A.
48 "beet" ; Has B.
49 "banana" ; Has A & B.
50 "cherry" ; Has neither.
51 ))
52 (no-A (lambda (x) (not (string-match-p "a" x))))
53 (no-B (lambda (x) (not (string-match-p "b" x)))))
54 (should
55 (member "cherry"
56 (completion-table-with-predicate
57 full-collection no-A t "" no-B t)))
58 (should-not
59 (member "banana"
60 (completion-table-with-predicate
61 full-collection no-A t "" no-B t)))
62 ;; "apple" should still match when strict is nil.
63 (should (eq t (try-completion
64 "apple"
65 (apply-partially
66 'completion-table-with-predicate
67 full-collection no-A nil)
68 no-B)))
69 ;; "apple" should still match when strict is nil and pred2 is nil
70 ;; (Bug#27841).
71 (should (eq t (try-completion
72 "apple"
73 (apply-partially
74 'completion-table-with-predicate
75 full-collection no-A nil))))))
76
45(provide 'completion-tests) 77(provide 'completion-tests)
46;;; completion-tests.el ends here 78;;; completion-tests.el ends here