From 4769e70e2e9af6eb68947d6c2ed0dcff0831def0 Mon Sep 17 00:00:00 2001 From: Spencer Baugh Date: Mon, 24 Apr 2023 10:05:24 -0400 Subject: [PATCH] Handle point not at EOB in minibuffer-choose-completion Without this change, only the minibuffer contents before point are cleared when a completion is chosen, which results in stray text when point is in the middle of the minibuffer. After this change, we heuristically decide either to clear the whole buffer or only part of it, taking into account the location of point. * lisp/minibuffer.el (minibuffer-completion-help): Use point when calculating completion-base-affixes. (Bug#62700) --- lisp/minibuffer.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 539206a19e4..d079dc0bcdf 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -2395,7 +2395,11 @@ minibuffer-completion-help (prefix (unless (zerop base-size) (substring string 0 base-size))) (base-prefix (buffer-substring (minibuffer--completion-prompt-end) (+ start base-size))) - (base-suffix (buffer-substring (point) (point-max))) + (base-suffix + (if (eq (alist-get 'category (cdr md)) 'file) + (buffer-substring (save-excursion (or (search-forward "/" nil t) (point-max))) + (point-max)) + "")) (all-md (completion--metadata (buffer-substring-no-properties start (point)) base-size md -- 2.39.3