From: Eshel Yaron Date: Tue, 13 Feb 2024 20:56:53 +0000 (+0100) Subject: ; Improve 'minibuffer-force-complete-and-exit' X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=aac3d04c5ed36561fff4b9ab1922c22726fbdf10;p=emacs.git ; Improve 'minibuffer-force-complete-and-exit' * lisp/minibuffer.el (minibuffer-force-complete-and-exit): Use base size as determined by 'completion-all-sorted-completions', instead of the beginning of current completion field (from 'completion-boundaries'). Those can differ when 'partial-completion' picks up part of the previous fields. For example, in file name completion with input "emacs/lisp/pr/xr", we want to replace also the last field "pr" when completing to "emacs/lisp/progmodes/xref.el". --- diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 84be37e27d5..ca981a1e7d2 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1953,11 +1953,13 @@ instead of \\[minibuffer-cycle-completion] followed by \ \\[exit-minibuffer] when you know you want the first completion even before cycling to it." (interactive "" minibuffer-mode) - (if-let ((beg-end (minibuffer--completion-boundaries)) - (beg (car beg-end)) (end (cdr beg-end)) + (if-let ((beg (minibuffer-prompt-end)) + (end (cdr (minibuffer--completion-boundaries))) (all (completion-all-sorted-completions beg end))) (progn - (completion--replace beg end (car all)) + (completion--replace (+ (minibuffer-prompt-end) + (or (cdr (last all)) 0)) + end (car all)) (completion--done (buffer-substring-no-properties beg (point)) 'finished) (exit-minibuffer))