From: Gregory Heytings Date: Thu, 12 Jan 2023 17:47:28 +0000 (+0200) Subject: * lisp/simple.el (next-completion): Handle first completion specially. X-Git-Tag: emacs-29.0.90~757 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9ecebcdded157e1efc2f51b67967fd101797f225;p=emacs.git * lisp/simple.el (next-completion): Handle first completion specially. When completions-header-format is nil and completion-show-help is nil, the first completion is at the beginning the buffer, so 'M-' missed it and moved to the second completion. Handle this case by setting/checking the special text-property 'first-completion' that is nil at the first call (bug#60411). --- diff --git a/lisp/simple.el b/lisp/simple.el index 24df86c80c2..e23ee961879 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -9755,6 +9755,14 @@ Also see the `completion-auto-wrap' variable." (let ((tabcommand (member (this-command-keys) '("\t" [backtab]))) pos) (catch 'bound + (when (and (bobp) + (> n 0) + (get-text-property (point) 'mouse-face) + (not (get-text-property (point) 'first-completion))) + (let ((inhibit-read-only t)) + (add-text-properties (point) (1+ (point)) '(first-completion t))) + (setq n (1- n))) + (while (> n 0) (setq pos (point)) ;; If in a completion, move to the end of it.