]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix small bug in 'completion-table-subvert'.
authorPhilipp Stephani <phst@google.com>
Fri, 23 Apr 2021 10:52:51 +0000 (12:52 +0200)
committerPhilipp Stephani <phst@google.com>
Fri, 23 Apr 2021 10:52:51 +0000 (12:52 +0200)
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.

lisp/minibuffer.el
test/lisp/minibuffer-tests.el

index 7da3c39e6b9498c68a82f6dfefc8278bd2b353cf..51e0519d48935a5b83f207e56318c163fcc2a7ad 100644 (file)
@@ -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)))
index 791e51cdcd537e8841a5592e1ec2547d90a3abf3..027711c21e6038c410638e62adef252ead2198ea 100644 (file)
   (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