From: Philipp Stephani Date: Fri, 23 Apr 2021 10:52:51 +0000 (+0200) Subject: Fix small bug in 'completion-table-subvert'. X-Git-Tag: emacs-28.0.90~2764 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3806d2168bdc36796d2dfac5f743582f0ce71c72;p=emacs.git Fix small bug in 'completion-table-subvert'. Even for a trivial underlying completion table (where the 'boundaries' action returns nil), we need to provide nontrivial boundaries so that they match the behavior of 'all-completions'. * lisp/minibuffer.el (completion-table-subvert): Return boundaries even for trivial underlying completion table. * test/lisp/minibuffer-tests.el (completion-table-subvert-test): Amend unit test to also test boundaries. While there, also test the other completion functions. --- diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 7da3c39e6b9..51e0519d489 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -271,7 +271,7 @@ the form (concat S2 S)." (let* ((str (if (string-prefix-p s1 string completion-ignore-case) (concat s2 (substring string (length s1))))) (res (if str (complete-with-action action table str pred)))) - (when res + (when (or res (eq (car-safe action) 'boundaries)) (cond ((eq (car-safe action) 'boundaries) (let ((beg (or (and (eq (car-safe res) 'boundaries) (cadr res)) 0))) diff --git a/test/lisp/minibuffer-tests.el b/test/lisp/minibuffer-tests.el index 791e51cdcd5..027711c21e6 100644 --- a/test/lisp/minibuffer-tests.el +++ b/test/lisp/minibuffer-tests.el @@ -83,7 +83,12 @@ (let* ((origtable '("A-hello" "A-there")) (subvtable (completion-table-subvert origtable "B" "A"))) (should (equal (try-completion "B-hel" subvtable) - "B-hello")))) + "B-hello")) + (should (equal (all-completions "B-hel" subvtable) '("-hello"))) + (should (test-completion "B-hello" subvtable)) + (should (equal (completion-boundaries "B-hel" subvtable + nil "suffix") + '(1 . 6))))) (ert-deftest completion-table-test-quoting () (let ((process-environment