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)
This commit is contained in:
Spencer Baugh 2023-04-24 10:05:24 -04:00 committed by Juri Linkov
parent 4c975111af
commit 9cbd25e5cd

View file

@ -2395,7 +2395,11 @@ These include:
(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