]> git.eshelyaron.com Git - emacs.git/commitdiff
Handle point in last file-name component in minibuffer completion
authorSpencer Baugh <sbaugh@janestreet.com>
Sat, 3 Jun 2023 00:57:32 +0000 (20:57 -0400)
committerEli Zaretskii <eliz@gnu.org>
Sun, 4 Jun 2023 07:05:43 +0000 (10:05 +0300)
This is a followup to commit e338a8ac41d4a9fd798dda90275abe75ac071335
(Handle point not at EOB in minibuffer-choose-completion).
That commit added a heuristic, but the heuristic was insufficient:
It still had the original wrong behavior when completing the last
file-name component (i.e., the completion category is 'file' and
there's no slash after point).  This patch makes the heuristic
cover that case as well.
* lisp/minibuffer.el (minibuffer-next-completion)
(minibuffer-choose-completion): If in file completion and there's no
slash after point, clear what's after point when we complete.
(Bug#62700)

lisp/minibuffer.el

index 298f3f8728da6228ab8dcefa46a98fbe1ae7790e..a873e5f9747959736cd5f30519fc878218558297 100644 (file)
@@ -4498,8 +4498,9 @@ insert the selected completion to the minibuffer."
                (base-suffix
                 (if (eq (alist-get 'category (cdr md)) 'file)
                     (with-current-buffer buf
-                      (buffer-substring (save-excursion (search-forward "/" nil t) (point))
-                                        (point-max)))
+                      (buffer-substring
+                       (save-excursion (or (search-forward "/" nil t) (point-max)))
+                       (point-max)))
                   ""))
               (completion-base-affixes (list (car completion-base-affixes) base-suffix)))
           (choose-completion nil t t))))))
@@ -4524,8 +4525,9 @@ minibuffer, but don't quit the completions window."
   (let* ((md (completion--field-metadata (minibuffer--completion-prompt-end)))
          (base-suffix
           (if (eq (alist-get 'category (cdr md)) 'file)
-              (buffer-substring (save-excursion (search-forward "/" nil t) (point))
-                                (point-max))
+              (buffer-substring
+               (save-excursion (or (search-forward "/" nil t) (point-max)))
+               (point-max))
             "")))
     (with-minibuffer-completions-window
       (let ((completion-use-base-affixes t)