From: Philip Kaludercic Date: Thu, 24 Mar 2022 18:11:01 +0000 (+0200) Subject: Fix wrapping of 'previous-completion' at the beginning of buffer X-Git-Tag: emacs-29.0.90~1931^2~930 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=392d66f6f5d9962d0b0f96decbebd9db00cce1ab;p=emacs.git Fix wrapping of 'previous-completion' at the beginning of buffer * lisp/simple.el (next-completion): Prevent an error of 'previous-completion' at the beginning of completions buffer. Also fix 'previous-completion' to wrap to the last completion. (bug#54374) --- diff --git a/lisp/simple.el b/lisp/simple.el index 6dd8d141ae1..921fba34169 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -9168,6 +9168,13 @@ forward)." With prefix argument N, move N items (negative N means move backward)." (interactive "p") + (let ((prev (previous-single-property-change (point) 'mouse-face))) + (goto-char (cond + ((not prev) + (1- (next-single-property-change (point) 'mouse-face))) + ((/= prev (point)) + (point)) + (t prev)))) (let ((beg (point-min)) (end (point-max))) (catch 'bound (while (> n 0) @@ -9185,7 +9192,7 @@ backward)." (unless (get-text-property (point) 'mouse-face) (goto-char (next-single-property-change (point) 'mouse-face nil end))) (setq n (1- n))) - (while (< n 0) + (while (and (< n 0) (not (bobp))) (let ((prop (get-text-property (1- (point)) 'mouse-face))) ;; If in a completion, move to the start of it. (when (and prop (eq prop (get-text-property (point) 'mouse-face)))