Received: (at 81645) by debbugs.gnu.org; 21 Aug 2026 15:02:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Aug 21 11:02:30 2026
Received: from localhost ([127.0.0.1]:46661 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wxQlJ-0001rQ-CV
for submit <at> debbugs.gnu.org; Fri, 21 Aug 2026 11:02:30 -0400
Received: from mout.gmx.net ([212.227.15.15]:44791)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <stephen.berman@HIDDEN>)
id 1wxQlG-0001rB-Aj
for 81645 <at> debbugs.gnu.org; Fri, 21 Aug 2026 11:02:27 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net;
s=s31663417; t=1787324535; x=1787929335; i=stephen.berman@HIDDEN;
bh=YZzwUGGzjMqxfRq/tNoJEKByUgXOuhq6HIQmmGATeh8=;
h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date:
Message-ID:MIME-Version:Content-Type:cc:content-transfer-encoding:
content-type:date:from:message-id:mime-version:reply-to:subject:
to;
b=tbIBVFR0KT+pvnBAKO00czkkhAfmCfgxdhkUWvKbnRNKBWntSWQpOUX0JSBq90h4
dJ4St+xgcMP+rhDQwt6/16KNFjZafN/U3HJBdaFLBGrMMoPZksTrDiTyE4QKKjSe9
Uykw4M9iFQCdkTISWwVYOH5SE4QNCQHbz5w10ivD3vR/LokwLHHn/bjI7lyCDy/Jf
qjQjedHKj2B6ngAzC2edNtX7lWmiFmyxuACxAl7OVJ4XbAmNhrMdwdKDDJVR9NSBW
b7ZzqSdxLBVSTvCyylabUcE/ZVxFRMjtelu52CVGrRGpi7e/xjfLq3Y04mI8ONzF4
K1HGKtkDyjwHeR3vCg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from client.hidden.invalid by mail.gmx.net (mrgmx005
[212.227.17.190]) with ESMTPSA (Nemesis) id 1MpDJd-1wbHD604qN-00eajP; Fri, 21
Aug 2026 17:02:15 +0200
From: Stephen Berman <stephen.berman@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#81645: 32.0.50; Annotations break *Completions* navigation
in vertical format
In-Reply-To: <86lda11i17.fsf@HIDDEN>
References: <87a4qkhmep.fsf@HIDDEN> <86v7983js6.fsf@HIDDEN>
<87lda3raxx.fsf@HIDDEN> <86lda11i17.fsf@HIDDEN>
Date: Fri, 21 Aug 2026 17:02:14 +0200
Message-ID: <87bjavldop.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Provags-ID: V03:K1:EVi+It0BIakTNt0vT3meM5B2343iji+G60lVcwqmw1/Pl0f/m/E
lgaIECBVA1GMcq15K6sEWxlf7GdhI24yUjo4SKjFCBQzmv5b1aXBjIeFSADM6qDV2ocMdxl
FC8Fkz5HAMqtMTam0e4arce5+YEGPMdhIIXY4ovH09NkLPb0ARjQh5pybT3UUI3Erg8l2eX
SZTkmvbbDuO2cH3IPjTEg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:RXN27Pt0iwE=;Lz9+edZxaxRxFSiwQDpw3JRrrxR
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
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 81645
Cc: 81645 <at> debbugs.gnu.org, Sean Whitton <spwhitton@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)
--=-=-=
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
On Thu, 20 Aug 2026 08:24:04 +0300 Eli Zaretskii <eliz@HIDDEN> wrote:
>> From: Sean Whitton <spwhitton@HIDDEN>
>> Cc: 81645 <at> debbugs.gnu.org
>> Date: Tue, 18 Aug 2026 11:15:54 +0100
>>=20
>> Eli Zaretskii [17/Aug 5:26pm +03] wrote:
>> >> Cc: Eli Zaretskii <eliz@HIDDEN>, Sean Whitton <spwhitton@spwhitton.=
name>
>> >> From: Stephen Berman <stephen.berman@HIDDEN>
>> >> Date: Mon, 17 Aug 2026 16:06:06 +0200
>> >>
>> >> 0. emacs -Q
>> >> 1. (setopt completions-format 'vertical)
>> >> 2. Sanity check: Typing `M-x auto- TAB' pops up the *Completions* bu=
ffer
>> >> and you can navigate up and down through each column by typing
>> >> `M-<DOWN>' and `M-<UP>' with wrapping from the last to the first
>> >> candidate and vice versa.
>> >> 3. Now type `M-x abbrev- TAB', then repeatedly type `M-<DOWN>': afte=
r
>> >> the last candidate point wraps to the second instead of the first
>> >> candidate.
>> >> 4. Now type `M-x dabbrev- TAB'. Now typing `M-<DOWN>' once moves to
>> >> last candidate, but repeating `M-<DOWN>' does not move point (in
>> >> particular, no wrapping). Now typing `M-<UP>' moves point back t=
o
>> >> the first candidate, but typing `M-<UP>' again move point not to =
the
>> >> beginning of the last candidate but to the middle of the annotati=
on
>> >> "(M-/)" affixed to the candidate.
>> >>
>> >> The problems in 3 and 4 are due to the annotations in the *Completio=
ns*
>> >> buffer. The attached patch fixes these problems, so that navigation=
in
>> >> 3 and 4 work as in 2 according to my testing. I think this patch sh=
ould
>> >> be applied to the release branch because the type of navigation in
>> >> vertical format illustrated by 2 was introduced in Emacs 31 by commi=
t
>> >> 77ca60b48d01, which, however, failed to take annotations into accoun=
t.
>> >
>> > I think this is fine to install on the emacs-31 release branch,
>> > because the code it changes is specific to the 'vertical'
>> > completions-format, which is new in Emacs 31.
>> >
>> > Sean?
>>=20
>> Okay with me too.
>
> Thanks. Stephen, please install on the release branch when you have
> time.
Thanks for the go-ahead, but in the mean time there's a complication. I
wrote some tests for completions with annotations (augmenting the
function `completions-format-navigation--tests' I added in 77ca60b48d01,
which tests navigation with and without wrapping in both the horizontal
and vertical formats), but I found that some of the tests failed with
the patch I posted for `last-completion'. I was able to fix the
failures by replacing the text property `mouse-face' by the
text-property `completion--string' (completion candidate annotations
have the latter but not the former) in numerous places; see the attached
patch. With this patch all minibuffer-tests pass, but these changes may
still be considered too risky for the release branch. If so, we could
install just my first patch for `last-completion' in emacs-31, omitting
the new tests, and install the more extensive changes and the tests in
master. What do you two think?
Steve Berman
--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment
Content-Description: patch for bug#81645
Content-Transfer-Encoding: quoted-printable
diff --git a/lisp/simple.el b/lisp/simple.el
index 7ea287fd6ff..37ceeef9543 100644
=2D-- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -10173,9 +10173,8 @@ last-completion
(col (current-column))
(last-col (progn
(first-completion)
- (goto-char (pos-eol))
- (goto-char (previous-single-property-change
- (point) 'mouse-face))
+ (goto-char (1- (pos-eol)))
+ (completion--move-to-candidate-start)
(current-column))))
(if (zerop last-col)
;; If there is only one column of completions, the last
@@ -10209,18 +10208,20 @@ previous-column-completion
(next-column-completion (- n)))
=20
(defun completion--move-to-candidate-start ()
- "If in a completion candidate, move point to its start."
- (when (and (get-text-property (point) 'mouse-face)
+ "If in a completion candidate, move point to its start.
+If the candidate has a prefixed annotation, move to the start of the
+annotation."
+ (when (and (get-text-property (point) 'completion--string)
(not (bobp))
- (get-text-property (1- (point)) 'mouse-face))
- (goto-char (previous-single-property-change (point) 'mouse-face))))
+ (get-text-property (1- (point)) 'completion--string))
+ (goto-char (previous-single-property-change (point) 'completion--stri=
ng))))
=20
(defun completion--move-to-candidate-end ()
"If in a completion candidate, move point to its end.
More precisely, point moves the the position immediately after the last
-character of the completion candidate."
- (when (get-text-property (point) 'mouse-face)
- (goto-char (or (next-single-property-change (point) 'mouse-face)
+character of the completion candidate (including any annotations)."
+ (when (get-text-property (point) 'completion--string)
+ (goto-char (or (next-single-property-change (point) 'completion--stri=
ng)
(point-max)))))
=20
(defun next-column-completion (n)
@@ -10353,24 +10354,24 @@ next-line-completion
(let (line column pos found last first)
(when (and (bobp)
(> n 0)
- (get-text-property (point) 'mouse-face)
+ (get-text-property (point) 'completion--string)
(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)))
=20
- (if (get-text-property (point) 'mouse-face)
+ (if (get-text-property (point) 'completion--string)
;; If in a completion, move to the start of it.
(completion--move-to-candidate-start)
;; Try to move to the previous completion.
- (setq pos (previous-single-property-change (point) 'mouse-face))
+ (setq pos (previous-single-property-change (point) 'completion--str=
ing))
(if pos
;; Move to the start of the previous completion.
(progn
(goto-char pos)
- (unless (get-text-property (point) 'mouse-face)
+ (unless (get-text-property (point) 'completion--string)
(goto-char (previous-single-property-change
- (point) 'mouse-face nil (point-min)))))
+ (point) 'completion--string nil (point-min)))))
(cond ((> n 0) (setq n (1- n)) (first-completion))
((< n 0) (first-completion)))))
=20
@@ -10386,12 +10387,12 @@ next-line-completion
(eq (forward-line 1) 0)
(not (eobp))
(move-to-column column))
- (when (get-text-property (point) 'mouse-face)
+ (when (get-text-property (point) 'completion--string)
(setq found t)))
(when (not found)
(if (and (not completion-auto-wrap)
(if (eq completions-format 'vertical)
- (and (or last (get-text-property (point) 'mouse-fa=
ce))
+ (and (or last (get-text-property (point) 'completi=
on--string))
(last-completion))
(goto-char pos)))
t
@@ -10399,12 +10400,12 @@ next-line-completion
(setq pos nil)
(goto-char (point-min))
(when (and (eq (move-to-column column) column)
- (get-text-property (point) 'mouse-face))
+ (get-text-property (point) 'completion--string))
(setq pos (point)))
(while (and (not pos) (> line (line-number-at-pos)))
(forward-line 1)
(when (and (eq (move-to-column column) column)
- (get-text-property (point) 'mouse-face))
+ (get-text-property (point) 'completion--string=
))
(setq pos (point)))))
(if pos (goto-char pos))
(when (eq completions-format 'vertical)
@@ -10422,13 +10423,13 @@ next-line-completion
(while (and (not found)
(eq (forward-line -1) 0)
(move-to-column column))
- (when (get-text-property (point) 'mouse-face)
+ (when (get-text-property (point) 'completion--string)
(setq found t)))
(when (not found)
(if (and (not completion-auto-wrap)
(if (eq completions-format 'vertical)
(and (or last first
- (get-text-property (point) 'mouse-face))
+ (get-text-property (point) 'completion--s=
tring))
first (first-completion))
(goto-char pos)))
t
@@ -10436,12 +10437,12 @@ next-line-completion
(setq pos nil)
(goto-char (point-max))
(when (and (eq (move-to-column column) column)
- (get-text-property (point) 'mouse-face))
+ (get-text-property (point) 'completion--string))
(setq pos (point)))
(while (and (not pos) (< line (line-number-at-pos)))
(forward-line -1)
(when (and (eq (move-to-column column) column)
- (get-text-property (point) 'mouse-face))
+ (get-text-property (point) 'completion--string=
))
(setq pos (point)))))
(if pos (goto-char pos))
(when (eq completions-format 'vertical)
diff --git a/test/lisp/minibuffer-tests.el b/test/lisp/minibuffer-tests.el
index 2f70d248711..fd8702b4a65 100644
=2D-- a/test/lisp/minibuffer-tests.el
+++ b/test/lisp/minibuffer-tests.el
@@ -873,7 +873,20 @@ completions-format-navigation--tests
(dotimes (_ x)
(push (concat (car comps) (pop letters)) comps)=
)
(nreverse comps))))
- (completions (funcall gen-compl n))
+ (completions
+ (pcase n
+ ('annot2 '("dabbrev-"
+ ("dabbrev-completion" ""
+ #(" (C-M-/)" 0 8 (face completions-annotations)))
+ ("dabbrev-expand" ""
+ #(" (M-/)" 0 6 (face completions-annotations)))))
+ ('annot5 '("abbrev-"
+ ("abbrev-edit-save-buffer" "" "")
+ ("abbrev-edit-save-to-file" "" "") ("abbrev-mode" =
"" "")
+ ("abbrev-prefix-mark"
+ "" #(" (M-')" 0 6 (face completions-annotations))=
)
+ ("abbrev-suggest-show-report" "" "")))
+ (_ (funcall gen-compl n))))
=20
;; Navigation tests.
;; (i) For both horizontal and vertical formats.
@@ -889,8 +902,26 @@ completions-format-navigation--tests
('line 'previous-line-completion))))
(completing-read-with-minibuffer-setup completions
(insert (car completions))
- (minibuffer-completion-help)
- (switch-to-completions)
+ (pcase n
+ ((or 'annot2 'annot5)
+ (progn
+ (with-help-window "*Completions*"
+ (display-completion-list (cdr completions)))
+ (switch-to-buffer "*Completions*")
+ (first-completion)))
+ (_ (progn
+ (minibuffer-completion-help)
+ (switch-to-completions))))
+ (let ((completions (pcase n
+ ('annot2 '("dabbrev-completion"
+ "dabbrev-expand"))
+ ('annot5 '("abbrev-edit-save-buffer"
+ "abbrev-edit-save-to-file=
"
+ "abbrev-mode"
+ "abbrev-prefix-mark"
+ "abbrev-suggest-show-repo=
rt"))
+ (_ n completions)))
+ (n (pcase n ('annot2 2) ('annot5 5) (_ n))))
;; Sanity check that we're on first completion candidate.
(should
(equal (car completions)
@@ -947,7 +978,7 @@ completions-format-navigation--tests
(should
(equal (car completions)
(get-text-property (point)
- 'completion--string)))))=
)))))
+ 'completion--string)))))=
))))))
=20
;; (ii) Only for horizontal format.
(within-column
@@ -1015,12 +1046,29 @@ completions-format-navigation--tests
(lambda ()
(completing-read-with-minibuffer-setup completions
(insert (car completions))
- (minibuffer-completion-help)
- (switch-to-completions)
- (let ((one-col (save-excursion
- (first-completion)
- (completion--move-to-candidate-end)
- (eolp))))
+ (pcase n
+ ((or 'annot2 'annot5 5)
+ (progn
+ (with-help-window "*Completions*"
+ (display-completion-list (cdr completions)))
+ (switch-to-buffer "*Completions*")
+ (first-completion)))
+ (_ (progn
+ (minibuffer-completion-help)
+ (switch-to-completions))))
+ (let ((completions (pcase n
+ ('annot2 '("dabbrev-completion"
+ "dabbrev-expand"))
+ ('annot5 '("abbrev-edit-save-buffer"
+ "abbrev-edit-save-to-file"
+ "abbrev-mode"
+ "abbrev-prefix-mark"
+ "abbrev-suggest-show-report=
"))
+ (_ n completions)))
+ (one-col (save-excursion
+ (first-completion)
+ (completion--move-to-candidate-end)
+ (eolp))))
(while (not (eobp))
(let ((first (get-text-property (point) 'completion--st=
ring))
last pos)
@@ -1150,6 +1198,12 @@ completions-format-navigation-test-15
(ert-deftest completions-format-navigation-test-16 ()
(completions-format-navigation--tests 16))
=20
+(ert-deftest completions-format-navigation-test-annot2 ()
+ (completions-format-navigation--tests 'annot2))
+
+(ert-deftest completions-format-navigation-test-annot5 ()
+ (completions-format-navigation--tests 'annot5))
+
(ert-deftest completion-cycle ()
(completing-read-with-minibuffer-setup '("aaa" "bbb" "ccc")
(let ((completion-cycle-threshold t))
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#81645; Package emacs.
Full text available.Received: (at 81645) by debbugs.gnu.org; 20 Aug 2026 05:24:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Aug 20 01:24:14 2026 Received: from localhost ([127.0.0.1]:43427 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wwvGA-0001VC-FQ for submit <at> debbugs.gnu.org; Thu, 20 Aug 2026 01:24:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52100) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wwvG8-0001Uz-Fd for 81645 <at> debbugs.gnu.org; Thu, 20 Aug 2026 01:24:12 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1wwvG2-0008RJ-Ts; Thu, 20 Aug 2026 01:24:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=ivydSBsIsumMt29HlSgfgmushOMszTNlnxjrzrkZDeY=; b=jz/NFfyhd6YK MZaLkOGy0j39xQ5pgM7Za5EwZcXNPdGjjOWeh9tHhfK+QlAiYduL0vN6dDU2JLYnWNPMeM4LVv8DX seHAMgtZ3C/HrszXKqxdLnxS36s43kKTW2cZ2ra98Vop045ICMj+2l/NtFMQR2IArLoprC7RerelI v168j3c7KSDl+KPQsdX7OjLMRA3qfpgEpDLsNsyeHFa6QFYEWyxu42xPONXNWi/19fW3D717oiaLx 8WaTBA7Vh3jzfzvhDeQHGCERgW6qmMx8+tjp2PGvxsuzUKSWg7m6aTT71MBy/U9bObQqduKjWDm1S eadxoTjYegqsurQ/vEOnzw==; Date: Thu, 20 Aug 2026 08:24:04 +0300 Message-Id: <86lda11i17.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Sean Whitton <spwhitton@HIDDEN> In-Reply-To: <87lda3raxx.fsf@HIDDEN> (message from Sean Whitton on Tue, 18 Aug 2026 11:15:54 +0100) Subject: Re: bug#81645: 32.0.50; Annotations break *Completions* navigation in vertical format References: <87a4qkhmep.fsf@HIDDEN> <86v7983js6.fsf@HIDDEN> <87lda3raxx.fsf@HIDDEN> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 81645 Cc: 81645 <at> debbugs.gnu.org, stephen.berman@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > From: Sean Whitton <spwhitton@HIDDEN> > Cc: 81645 <at> debbugs.gnu.org > Date: Tue, 18 Aug 2026 11:15:54 +0100 > > Eli Zaretskii [17/Aug 5:26pm +03] wrote: > >> Cc: Eli Zaretskii <eliz@HIDDEN>, Sean Whitton <spwhitton@HIDDEN> > >> From: Stephen Berman <stephen.berman@HIDDEN> > >> Date: Mon, 17 Aug 2026 16:06:06 +0200 > >> > >> 0. emacs -Q > >> 1. (setopt completions-format 'vertical) > >> 2. Sanity check: Typing `M-x auto- TAB' pops up the *Completions* buffer > >> and you can navigate up and down through each column by typing > >> `M-<DOWN>' and `M-<UP>' with wrapping from the last to the first > >> candidate and vice versa. > >> 3. Now type `M-x abbrev- TAB', then repeatedly type `M-<DOWN>': after > >> the last candidate point wraps to the second instead of the first > >> candidate. > >> 4. Now type `M-x dabbrev- TAB'. Now typing `M-<DOWN>' once moves to > >> last candidate, but repeating `M-<DOWN>' does not move point (in > >> particular, no wrapping). Now typing `M-<UP>' moves point back to > >> the first candidate, but typing `M-<UP>' again move point not to the > >> beginning of the last candidate but to the middle of the annotation > >> "(M-/)" affixed to the candidate. > >> > >> The problems in 3 and 4 are due to the annotations in the *Completions* > >> buffer. The attached patch fixes these problems, so that navigation in > >> 3 and 4 work as in 2 according to my testing. I think this patch should > >> be applied to the release branch because the type of navigation in > >> vertical format illustrated by 2 was introduced in Emacs 31 by commit > >> 77ca60b48d01, which, however, failed to take annotations into account. > > > > I think this is fine to install on the emacs-31 release branch, > > because the code it changes is specific to the 'vertical' > > completions-format, which is new in Emacs 31. > > > > Sean? > > Okay with me too. Thanks. Stephen, please install on the release branch when you have time.
bug-gnu-emacs@HIDDEN:bug#81645; Package emacs.
Full text available.Received: (at 81645) by debbugs.gnu.org; 18 Aug 2026 10:16:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Aug 18 06:16:03 2026 Received: from localhost ([127.0.0.1]:48837 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wwGrS-0002kA-O5 for submit <at> debbugs.gnu.org; Tue, 18 Aug 2026 06:16:03 -0400 Received: from fout-a8-smtp.messagingengine.com ([103.168.172.151]:46835) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <spwhitton@HIDDEN>) id 1wwGrR-0002jV-3n for 81645 <at> debbugs.gnu.org; Tue, 18 Aug 2026 06:16:01 -0400 Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfout.phl.internal (Postfix) with ESMTP id EE431EC0294; Tue, 18 Aug 2026 06:15:55 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-03.internal (MEProxy); Tue, 18 Aug 2026 06:15:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=spwhitton.name; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1787048155; x= 1787134555; bh=Ds8cSrE5Qi8c5U2XPAQ4z344Uu4X5NtZVJtW6lRTpUY=; b=m 4zZcPHp7pqmZKXNCzSdXsRu7OVqLyBisisD7bNN+HTAfCYKRMr4POezVg9ANOOOx lKK3AuYYJoXkogv7CJf/GYtZWI9kxObeQRJjggRoYnAe1MqJYZAzXRNYhOpLZLwS h0rd0pUWkGMEvURJteHhwNIhA+wDOUTF5zt+gVqNTT8c+qkoaVygTSd5gZxd8NrH 76kshXNC8aQghCza1vFvHx34MHhKv3VcTWiEweWa0dzZtzvxeXGtRfalBDgcOWuA 8AHlhi2s+MPG34IH6bucnudJzv8mAG/6oboYkZHzhCRYs41FOssqYiw1zIdgcaxJ T3HkSHRLaRwrSdfqqGYbQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1787048155; x=1787134555; bh=Ds8cSrE5Qi8c5U2XPAQ4z344Uu4X5NtZVJt W6lRTpUY=; b=VVMDdzxzCkHpb4FYqToL9rXdIX6XIJgBCjHNkuqPN0Lqj7uv9Xu whjc+Dq0ZdPsKe8l7l2YItnfeEiru4NXrEeX3Lzw5AZF90W8wGDMOHSmr0t/aA5t 3fv7BEe3mavCX6WcrUp/xTH6QS9MVIEoaqcGV6L+L5roQFWLEfmFFwVQlwNblKee RzzpkxW5nj/tctvlR0KXCdlXA8q2UFgFvuQQ52eoUVQqQUXlc/hSEA4wqMQgSnop B5qVTv22REAy84ITvMD+B1p7AroQj0ioeYvG15mbqg2JY5wmxEWB9RHJ2tJpRwX3 k9D1djWsTb51AGf1f83B3K7ZoYgt9G137MQ== X-ME-Sender: <xms:2zCEamwPF-ezSWu5HvJxbzqAMR5hU1VY6HRr9_GRRwIBCDY4NtVtLw> <xme:2zCEapuQDq5SNDmR7HZ9QYpkT_vMWUfwVJ4nQ7VmTvnDcESR31hYpAP7gp7-7Pegy 9di8-XZil9Zb58Z867pyuedxzxo6EcOTzaQL_gNfLgUYu0NFGMhiL4> X-ME-Received: <xmr:2zCEalvcgB9sD2NJTFXhWBUZdcyzpo8N7m-SQp_xtwwZ9V5F_4OVZrNPcmaSD2HgexYMgjx5XGkY> X-ME-Proxy-Cause: dmFkZTFtBJuR/Xm56WP7xqBJByq+9PlCl/wC2RHXV4Gm+O3IY0bsCazlOpg/GbXpFlh472 BuVxtLvHnk0zhb1Q6tds+5Lm+simmkXpmCHvKst4pgwWfvFSIPQyhdG7YwVsJun3Nj3KTU qb+gbSH+FKdl+PyMlH0fnH+W/BoSGS+S0xYNawWp38jfbzJORtqoSfwALJpcqOXbDt5y0h a/WydMT6Zy1w5i0MLcNsRS2GYHlgHMuGqDva1w+59zHHz2J74CU+Xw/nxP12A3ngeJj8tn /+yWV0S3aSbJDaUuRNilqO2vGt+pkhw7e5HGOZ9NFt8tldKBTYhABkeW6KMNGI0McalVWv ATytH1bRa/rY/iisOXcbhHNnQOOxmG2hCOEnhrjXKdplejoHW8f7raYowNoP1HtoQJpQ+p lM+Yz8fU6U+Nn0wvpmIEXGjIgxN+Z92eHth6MXIBrXumcYvRlu8RWMJ70ssLu4OrxZsifO TA1KPt+UMnFIbhklW0DOphb5Xyyfr000dVp1hhyq67pKhYtdx81ARfFusiG10AVTUeQTI/ l9SZrfLicPZ45D/FjVjJkSrAyyUOVkWqt4LgcrR4E/c0N8dhuSoRzHGDy9P9KJMUitIWkr lZvn1d/vlBF0oYT8UwvGJ6ttPCZ+j0oUR1IEfku0OL5eQMcs/PGcf3a6QpRA X-ME-Proxy: <xmx:2zCEamMYhibvqYmmLm_h8hYcrYVPDESxSVFtcaQekSCELFiPNTUyeg> <xmx:2zCEar3PpqA-YqLbypvK78RPmH3qXYuuQsjyYMtUcsXSndSjcIR-Vw> <xmx:2zCEaqPCd7jZMLJv_DOmMzumfjZ37jTAkse6wucF_HwSGMfV9QIFMw> <xmx:2zCEaj1b81nns2n7243t-qEhJH7j_DQXztVyD4120mP9IYS45rA-IA> <xmx:2zCEasfClS8LKt60vEhuUvBWmFiv19tTmqvdB9st6DSYQEKGM8ZQoiFg> Feedback-ID: i62564b17:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 18 Aug 2026 06:15:55 -0400 (EDT) Received: by melete.silentflame.com (Postfix, from userid 1000) id 6C9597E666A; Tue, 18 Aug 2026 11:15:54 +0100 (BST) From: Sean Whitton <spwhitton@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN>, Stephen Berman <stephen.berman@HIDDEN> Subject: Re: bug#81645: 32.0.50; Annotations break *Completions* navigation in vertical format In-Reply-To: <86v7983js6.fsf@HIDDEN> References: <87a4qkhmep.fsf@HIDDEN> <86v7983js6.fsf@HIDDEN> Date: Tue, 18 Aug 2026 11:15:54 +0100 Message-ID: <87lda3raxx.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 81645 Cc: 81645 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) Eli Zaretskii [17/Aug 5:26pm +03] wrote: >> Cc: Eli Zaretskii <eliz@HIDDEN>, Sean Whitton <spwhitton@HIDDEN> >> From: Stephen Berman <stephen.berman@HIDDEN> >> Date: Mon, 17 Aug 2026 16:06:06 +0200 >> >> 0. emacs -Q >> 1. (setopt completions-format 'vertical) >> 2. Sanity check: Typing `M-x auto- TAB' pops up the *Completions* buffer >> and you can navigate up and down through each column by typing >> `M-<DOWN>' and `M-<UP>' with wrapping from the last to the first >> candidate and vice versa. >> 3. Now type `M-x abbrev- TAB', then repeatedly type `M-<DOWN>': after >> the last candidate point wraps to the second instead of the first >> candidate. >> 4. Now type `M-x dabbrev- TAB'. Now typing `M-<DOWN>' once moves to >> last candidate, but repeating `M-<DOWN>' does not move point (in >> particular, no wrapping). Now typing `M-<UP>' moves point back to >> the first candidate, but typing `M-<UP>' again move point not to the >> beginning of the last candidate but to the middle of the annotation >> "(M-/)" affixed to the candidate. >> >> The problems in 3 and 4 are due to the annotations in the *Completions* >> buffer. The attached patch fixes these problems, so that navigation in >> 3 and 4 work as in 2 according to my testing. I think this patch should >> be applied to the release branch because the type of navigation in >> vertical format illustrated by 2 was introduced in Emacs 31 by commit >> 77ca60b48d01, which, however, failed to take annotations into account. > > I think this is fine to install on the emacs-31 release branch, > because the code it changes is specific to the 'vertical' > completions-format, which is new in Emacs 31. > > Sean? Okay with me too. -- Sean Whitton
bug-gnu-emacs@HIDDEN:bug#81645; Package emacs.
Full text available.Received: (at 81645) by debbugs.gnu.org; 17 Aug 2026 14:26:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 17 10:26:45 2026 Received: from localhost ([127.0.0.1]:40033 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wvyIX-0003Ia-Gb for submit <at> debbugs.gnu.org; Mon, 17 Aug 2026 10:26:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35120) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1wvyIV-0003IL-5T for 81645 <at> debbugs.gnu.org; Mon, 17 Aug 2026 10:26:43 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <eliz@HIDDEN>) id 1wvyIP-0004N6-Ci; Mon, 17 Aug 2026 10:26:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=3GlHRlYODF2V/NioBv3q8aCbYmuZg28/pbY3V6lChwY=; b=nmPp4VzyjSyT VzX0gEQwud9V9an3pEkxpv2WkVitEbqBvCB49qaz2hrxpYR/hSrpjVSbra/ZzUwh9C+iAfcOphKh4 LYT/phjzOYAbqN98Cc1GIAKcIMEKL21F+fCPfTS2H4AxINN4a6a+Q+MSqVq9GNsfpyGF2JfxdUZ/H 3qiUsKjCaDRAcGqaYzvwAkkWzRNKr2NEHiQI2YfrOCISaEVeavnlO+62bs7KnsN5dOMi53yqcA/GE WEXdy1Hwg2BHbKyBDz/1/Ij8qHZLAk5u091jL1GpIDwzkRH99pKN2mPYEP0m1bXYgXCWFQddZ3zUk Gkak5gWdwwbjuGdYm6jQnA==; Date: Mon, 17 Aug 2026 17:26:33 +0300 Message-Id: <86v7983js6.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Stephen Berman <stephen.berman@HIDDEN> In-Reply-To: <87a4qkhmep.fsf@HIDDEN> (message from Stephen Berman on Mon, 17 Aug 2026 16:06:06 +0200) Subject: Re: bug#81645: 32.0.50; Annotations break *Completions* navigation in vertical format References: <87a4qkhmep.fsf@HIDDEN> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 81645 Cc: 81645 <at> debbugs.gnu.org, spwhitton@HIDDEN X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > Cc: Eli Zaretskii <eliz@HIDDEN>, Sean Whitton <spwhitton@HIDDEN> > From: Stephen Berman <stephen.berman@HIDDEN> > Date: Mon, 17 Aug 2026 16:06:06 +0200 > > 0. emacs -Q > 1. (setopt completions-format 'vertical) > 2. Sanity check: Typing `M-x auto- TAB' pops up the *Completions* buffer > and you can navigate up and down through each column by typing > `M-<DOWN>' and `M-<UP>' with wrapping from the last to the first > candidate and vice versa. > 3. Now type `M-x abbrev- TAB', then repeatedly type `M-<DOWN>': after > the last candidate point wraps to the second instead of the first > candidate. > 4. Now type `M-x dabbrev- TAB'. Now typing `M-<DOWN>' once moves to > last candidate, but repeating `M-<DOWN>' does not move point (in > particular, no wrapping). Now typing `M-<UP>' moves point back to > the first candidate, but typing `M-<UP>' again move point not to the > beginning of the last candidate but to the middle of the annotation > "(M-/)" affixed to the candidate. > > The problems in 3 and 4 are due to the annotations in the *Completions* > buffer. The attached patch fixes these problems, so that navigation in > 3 and 4 work as in 2 according to my testing. I think this patch should > be applied to the release branch because the type of navigation in > vertical format illustrated by 2 was introduced in Emacs 31 by commit > 77ca60b48d01, which, however, failed to take annotations into account. I think this is fine to install on the emacs-31 release branch, because the code it changes is specific to the 'vertical' completions-format, which is new in Emacs 31. Sean?
bug-gnu-emacs@HIDDEN:bug#81645; Package emacs.
Full text available.
Received: (at submit) by debbugs.gnu.org; 17 Aug 2026 14:06:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Aug 17 10:06:33 2026
Received: from localhost ([127.0.0.1]:39979 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wvxyy-0001r6-Ml
for submit <at> debbugs.gnu.org; Mon, 17 Aug 2026 10:06:33 -0400
Received: from lists1p.gnu.org ([2001:470:142::17]:58620)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <stephen.berman@HIDDEN>)
id 1wvxyw-0001pE-3Z
for submit <at> debbugs.gnu.org; Mon, 17 Aug 2026 10:06:30 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <stephen.berman@HIDDEN>)
id 1wvxyf-0003gm-BF
for bug-gnu-emacs@HIDDEN; Mon, 17 Aug 2026 10:06:13 -0400
Received: from mout.gmx.net ([212.227.17.20])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <stephen.berman@HIDDEN>)
id 1wvxyb-0006yf-GG
for bug-gnu-emacs@HIDDEN; Mon, 17 Aug 2026 10:06:13 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.net;
s=s31663417; t=1786975567; x=1787580367; i=stephen.berman@HIDDEN;
bh=xgXIMwYcKEye/rAfdPVMcswtsaDSo9XDguZFrQa45bQ=;
h=X-UI-Sender-Class:From:To:Subject:Date:Message-ID:MIME-Version:
Content-Type:cc:content-transfer-encoding:content-type:date:from:
message-id:mime-version:reply-to:subject:to;
b=uJBAUEteCLi+QQle2c0Vu+jRiOVTBtWTVPRIz6szNdX5EHqleUfoJcWefGRDFnmu
weFpn0D+qlb1F6eRgG4i5TnwLmfp652i15gVa0aLOvgTlFpvL0YppDo85qYWxfSaw
fQNnh1BHc0Aq9so9GAPfxHn40ZTikpunRHobHzJbJfXUyKKZXb3AQv3ubv/4KqHeG
BqbgLxA1beUu1e4g7kC4gj8I52I7F8nqkHsFdABckiHaLEZGITge2OnibCE5Ij5xK
7YNJgLc1XAg+Rkdm+tcRqtu1L1vPxvyJvD6Q5CfJE3Mp+8WtxYLb9i8wamvEpw8i5
5Acx9KlUldPI+RXBWA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from client.hidden.invalid by mail.gmx.net (mrgmx104
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MORAU-1xKlxR2BTy-00SWFr for
<bug-gnu-emacs@HIDDEN>; Mon, 17 Aug 2026 16:06:07 +0200
From: Stephen Berman <stephen.berman@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 32.0.50; Annotations break *Completions* navigation in vertical format
X-Debbugs-Cc: Eli Zaretskii <eliz@HIDDEN>, Sean Whitton
<spwhitton@HIDDEN>
Date: Mon, 17 Aug 2026 16:06:06 +0200
Message-ID: <87a4qkhmep.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Provags-ID: V03:K1:gTfEcEJTXbHLpp0QtJPcLX4QmhZGoqOaBhg0gTtJ9JKj9ujeOwc
hqz3heu+8/hKik00jouj7ETRA2drGPoeOEqe5fON54qE7omKjBU1tQNtccBOVfl6cAX9E5S
NIznK2ob2W/n1vF2U9SjoyUomVjpLw/fQR7I4sktnhCj4mKX/3MvEWH6+q/sJ5Y7J7skMEi
YV6xdTtYifeEdcMnG+O9A==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:ibU3qCONwQQ=;6J4RvdyV7Bcylh5egSRcZo9N1oU
/GW6fSs2079CYbdGoYrTgxeX9Kc7fyYXwvgymiFtC4x/nff3cPE0r/9/UHQFjd8h5OKqf4daH
g0w9+sUL72Bq8Jpxzc8xVxpmQ9UxBsvNarh2z9JHWgyU8La1JCMVLn8sUIas8MMGOq5vsZbiJ
b/hiqlFsgvk5SWGuIJQ9ytSDM0xP5tGkvG0Gz+lqGYq1gfy45aU58BUKz/jUvCImJoy09txiW
88zokzFbejD6rJFSDcqDHYTr5OBBNV/A3VtU+O6YB5Vvw4BDv5VRVIBIpsbuxyO2c4xoWmolR
wSrnnd737653vLQA2G0zivFC308ceQacLGKlpFbSX4NJaVCxToaOOXOeEJb5+cZdi1zqk96z2
zj9Mxxs0iwcGr1XgWJot8rEUDWuciZhxsanJFb0z04W5NefXErnHVCz2ggu8pU6XuAytcvkXv
CjgRL4Ob/qJSbXrBhKS3qaRJSL/qlH0lNUnVTNj78Sq9my488pw+AxuukgdrNbmhQZAjfnTpU
zAniGdBtAasWyTdq4B1a7ghoW+CZvQv4wzZH9ju8mMYc+p8nZxsn0tdC5OcY6AQKZuKBhcLHN
bGhgFyCYIBOBNn3qVBc1VesSzUKXl6o24G997iAKFGMIhsgF7mmRbS7i72wb5LliiRgGcW6C3
QdgQ18fXlWbfJrt8U6VLUeJxVXwQPBeeMbqdfQmI2K3dGfaUTuarY2phyJ+jqJIkbIATHruM+
cR58uwufhdbl9b87OaZ0pqHFl05CGgJzpSanCOYdXGWfLOXb6Tr+z7/DL0THl9jagM+l9sbQA
uirqLjqiFC58UlS12EYdSscpvh3Cgjx6pToJVdpM3/EJoqabv8hwW7sjlirl5Dj0W+Gm+/AxG
WnGX07ov4M9KgJhFXOokgStsXyv2JYmXiEVr/pN7J6vjNQoY7weKUp95hDl8Ceig1ZLjGfUga
X77FjuQ01268FN6N7bnZzuUxrcb3RzounVMyv8CK4j1wp4nhfZt/W186NllXOjZWlWWI1dENo
iFhkXtp5SYf+99FsblTSZ9qaYJA5wVU26urB1n2kVZnoeurAxo4yaTBkXhKlHHlrAcLzwixhq
JcwUM2w4K+ZHLm94Bdu+lwgmfNsJ+jdNwiWSgBMH29y8zptfh4AbGksIIuqGhWIvs5gXqvk+S
pCUkrIeLmRwPK4ApDdFhGa6WskrjwKN+1cwiknRAOPFtZwkL3ZB5WIuvI/hQZ9AIXIi8iAx6P
+2RBS85mcrrv4N3mlthSLiGbl0NJa3C0BQseNartFOLzCHT0Si0gfh/t1bo7E7kOaHkhH8Y9P
/yjqzDlq1KzqiK5LFBCZDnavi4v+l9B+p83Wr/vcGrRh+1tt6b4/LdhfmrBbOWs+ZX7TlC7f0
6wCGylONl9qjcp4lc75iAUgyHzO2dkJlD09JENSECwRMg0vs5SAFvqfJtENk2FscKQdBF2uTj
0SwxEPIUidZlVR4q+vs0Qn4q3DJcdg3+8H1oqFYWf7N9treaKKHt3HPDZ+OdLnVpwnE0pgs+3
xbqLNnkXqrkeb5P7xcYwtZ1+JliW7bf2tOrtKS5GdLbOmWnwQghNc80mberuaziaObqgZEyNd
p9ACJATQ0mXK7Mx7/AuFuv57qFF02mHglTuoTbJmIm191yPLEvAOlH9i/YSx8jfADe9vUjNKp
GRmpP7FzStTTRyxCH4jZB8GA5u73e/OqdnBDbsdf2Qde20SoywD5+GAwxLBL2XqcLC2KM69kx
0TqJ4VhUL31oCuYQ39HXwbiLJ/dw5mxZLtG8lVWhG9NLG05acEYfVlsBc1ZKHuOMtDFNfS8VE
j/v3neid2jzbpBpNOgth77YFn6XmW147NrsoeQ/zcHf5eedc87bwAX1N/Hh24TxDsN1UEYvdj
sXeNWikolvVvlITiXjNa0qkvI4/AUGzoUTUVxt/GykwBXVNPs3b3PZ0yC6utey+hjM4f6+fIr
bc4Oqafv5X0vdPkzv9PyFtY/FMokczqRmKg+hEOqwBu4b8U2OUMQw/2JH1vVwuJNPkrXz+rml
oni3ZHe1W+W7oEsXJR0FUZKYem+ts2g8ss74Z4VEvtuSZ3bbhvbMexEkx/LVjs3lFM45uhtAV
vHJBxuoKAvGB96Tna6pBL2E8VFredMGeLqHmYNEz/l6J3nF29PLH0LzZev54M57N9msXEXgHz
IGBNMvGb8pZGHWXi5MMbr23kP6WM/Q4o5ke4c+E6ZHhSQ8pAeVbUYZveFPNY13u2/pvdjpM4D
eNWYAjgY7rdZoqSBeKhbZ3Nvi/i96YmGbyrStjRA0UtKT9XZw2PfrjMBbYTZMwdj3qsK5hpV0
AUYnTDIBqe+w8EVFXFbR1Ro7KpaMDH0Kx5rYqcaA6TUVPc2vAsZExSJca2KjzgyyfnMJ5gmCV
RXYkhs1bN0LlZQpwuH8obn8PqeFKVfS7tA2R6T1OjO/dMLgpj493U0b7EGoRX2UMt8cWi6/n2
ka0wDAorqISg6GXwJlWdqgRITsG5MiuXJwZp7niEwNOv79jsRjeO4uamibHVFcFQwLDFvBNTz
8gngpN22KWBc2nuKhBO/+jXs4av9c9LPrpMOFzd2DHbQeL3h7gGYQM5wcQCepCwLC0QUPXHaX
90UQRT88rpKrfoNZ8jGW6+Gh4D/MQb2oVmv3nkmfYuZDBpyXNE1dGrSrYytLdK+rCqAw/h2Uj
x9rPO65xRZM1SXkg0WyP1VFENwwNQhB0wVLdUOFM3VQPsl6RaeH9s6mIXo7r7wpJnuyUuzvjm
CrwaDLcm3XwolmOvVlhe3sVNsdUDtLtSFvdr9qASDb9pH5WuFj6WhJjKbWIXKQ6K5ruJPGtYl
5ghhFeD/BPGq3VKPWfDG0jsMV8w4XVzgzcqZ4o9tz6LpcTbCgAfgUgsOXSAzgls2U57a1J66n
T5wwj5HVj5bPl2KzJhBfO5n/5XcNo7lZO6X6wm2sIss9kf1BEl8bcJcGBLPVY931z2SVR56Gw
Zjd4P223x0khlm4BbCHtQMIxPcFFMuMwZEhod7+uTHEWContC5JVc3GpdRgyWCjv6nV2J/BNR
stcizO1vQ3gpIJKJPLAsgwsel8ugKJ3KRM4a3V8da8BNMK5cuLNo3RmVUkfgynhYUijnqP5LM
+T+MqWLCKNTPKUcz0/4HQ3hhfT6YtBm7bSiisMs/uUF53VL63lH0XXQwFPQhXPMlPwaEaMnsF
59eWd0N1bSU50sp6qxcLwsScsbvN0NMX+7/BoWUPBTrQU0Mw9Fkk1xn/gnHaECfQBn59bzzZh
TvVfGkk3nvNUn9AlSjPNevuqasPFGgBn7hYYKZNVFrXysDmFhddcE49oIST0RqNPw+RzjaMTm
o0h57LG0sAu1Uj4a1B6/6VnL4HGi2CRrxedqfs1Z60XR/e1xv2p1zogZcLHD1IIbC3vgtwWl6
bJO0m2ImXy500yVmtbWR7qgMge1IJusK1Fdg+15xhmzUUrZjEFUhLxkvOby8bPzp03qd2NJbp
E6MCAJnU7g6QVUooOIGJ/Wq7+2A8Shevs7sMCk9b0EcXVjB1l2EWLUeqsF+clqbHuZD1iCilT
IZpyZHs8ByTCZNbTqlqDrqm0tjQX/xwyr9j17wNGuGHtQ1hcPivoGCwb+ZKV95sFjuZDiUb4g
2Ohda7l/M3iRui16/zt02/TaxZiMV9eVhrfg5GxpehQ6qXHNsnTl4/V+cMrXp2hQmIBxiGvOS
Fn1PdPFXh0SPth1xc5sY56AOpuq6SWpTrC3eMnAvOvw9cST1quAs4jZlKzTnFHhIGoPOI/6sE
j9JsJ/FLf86HI+WSuxHoj12Alx8Eeoq8aCEdc9e2ya+T2ukuqI4ucAqm8+7OXwGYJ/flcoduN
9MeVV9ftPWnyGjnVXBQA1N2kgTLiHR6YDrUlfN2H2BlkNrIBshn/BDhVzmb0ApAKvGU1z3MFG
tlBp7gJWJTVCfuWCPwV/aIgFnzQnMbBGqOcxNYAhfTbh+eU0lTZnXW6Mw0iMhNGPaWoI5lOZ4
55RtO5gB+P7v475BgFtCt/G3k0hONbjNTjoImWknF6r28qMIs4g4McCMFNgtuxa/9qfaSotrk
s7vkANNMQBQgcFX38IfNq7wPY1Ro/10c9t8BS2Hrjjml5WZ/b+pfQQZeVlCFOCFkdNq6C5qnE
BQkA32SjckfQ+hsPpmwWz9GxHxRjpWkkn+C7eph3XI8yl+eKwkMbSUltRnWqowUP2eKJg9nIT
7dKAW2VdCNK5ho475FB+Jc7GlMWxKPwiA0hf+McG0rU4jnHeqF826Fc6hQKurDxloBoaM4PKh
CjfD79rCL1R46TZyPKpzs7hj4bYsfQKxEJqAWickssJAmDN80KmELB83Rg1K0I0xIzW9E/lBQ
oB+9Gsf2ipfglbL8BJKvXuKqItdLh1i+gtQ4uxEUtP6k+WkQNxM1wApIjDSgT9hDMiS+9vG2X
zh1NXZsQSwkfWZNiMd/jWS9bZ/tWGNQyQuWiNplJY5Ku2CfH+uKyyrZxPNclbh7aVbsEaWECh
a75Mn0AW8JEscG8ZIsbH4xnHLYmK4JhyY1It0Xsq3R9PuJUjZrS7+Wgvsj77e8zCTZbRNdvOq
2C5yqcqywSZLeKalNB+yNa+CZj0qquvwacwY5Auoy6nZ+Fa9+wTzxB+T1jjQCYWzCvwlT2DfH
ZBT3qD0ajh+lK4e/UXzAqv+PsOm9FS7fzruPqJh/XOkquugA63hcfCDtOsYgTyGZWJ+8KOJLS
eaQjqGnC8hfwdZujl7nFyOVsztFpULIss/K58hOXNmZOIj0BYe9DAetMlHfV0zt+nnjHFXp1l
mFtJr1aLQr/USmssRytCaLH/s9J6KmdpWlo3cMLNC1Z4dfxjVb3wfydjwK8JdBhsvhffLCty7
D4tNAC3OviOXFMDko7o01fE7vHmfDpxTx3HaJa4FGDy53OE4/UX2mvQPp7yKBbf1gOoVEjM8e
hKyMeVT8xUO343jWBtr2ebZ46wXiNu2LueysV6dTchFzeqglHNgGW+il+iZQCDWLKiY99Y0gx
7OFoFpb/UDPIxQututNv5+sL9yUYcvvd3/557y81Rs+gm7PTIECiTKYqzbQ362xfmF1z9/ub4
Qp9bIUBFuXnKLamwpSrCDVTt6OKolVe0VuaVuQoWPHWjxZZ1cZD0YD3vFqwKbxFl5nheSkr/b
/NpBaOig8oHIJzO0sU6rj7AC922jY0Q/65prGUmJ1YF6ZQ266+zpmncWi1+SZD4gYg92jqxBR
aplWmjKuQBxYi81ygNzj9vTr4SJXlO1IAQdOSvJXum9uNgazslpfvHa/STwN9i4aImJ1BliEz
TcKXaI0SNVWJRckN1ANKRu1kFIfHlRpmXgF0EJdZusVeJb6ghsl0DkUCLhYKlS+VlzgLFpPGG
uyd3pA7W9CpyEJWBi4M8vpz5HUeAzBwUo6oUDiHKG7tfEskX+hEuf7EHMVBW/mIcHP7L1/jg4
nSHORDRwC4m1zV+jY39pfmyTYbiemhcL/2e97hGzyknbeSufWFkunDtXmHiLJpaqsfYU3abG0
4os8Jn3rVqygaEp/0cL2QmK7VETw0pLPPpKKqS5X+PRcjhmKtKNTGmG2yXOrA9I6jP7Rc0AWD
a20F2AfT1/nIaNL7jgW1T4SXx3lnKTyWQSDrF3rRCtByUTh0+m/AHfv2aetqeqRcXV6pxmnYX
vSBR1jf4mfYNGKTZUmvjlYMH8h3JzMPudWOE8EUS8jfwXpXp0/+d8QZFGyJokgL4M1TvFkvUn
3vlAGfqHXI85jmLugIEU3v+C+3gUOLaOI4k2eqw7M6Mnsg5XsP8SrTqLjwTjp0a7qWWbb48ql
plEzfJMOTB4QnAQgKGhXbWsNrRl4x5y9ZLvXswizX98lO6I2GrjdZYHhK3r8381GwsJllSnOy
TmRcyw7m/F2KZznnPKsVIiD6PQ3kjdV+FFe2nFXOdZSn5lrC75rPuZfiAgOTKYt622/VpFwnV
QQqIKvKdUyP/egyznrsLGbJhrilrmlirME+BNdIqjcxZTQU2rWr9cw+Vzg0ta/bJFvgDQHM7o
ZodIHcD71j2tqBzA/kXgYjKj9qHlTXdhagEvTPAM1pjzyHDp5jBEmMEnkzvLhO0tsKHOXIlnQ
4E2bxmQ==
Received-SPF: pass client-ip=212.227.17.20;
envelope-from=stephen.berman@HIDDEN; helo=mout.gmx.net
X-Spam_score_int: -27
X-Spam_score: -2.8
X-Spam_bar: --
X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001,
SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.2 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
has NOT identified this incoming email as spam. The original
message has been attached to this so you can view it or label
similar future email. If you have any questions, see
the administrator of that system for details.
Content preview: 0. emacs -Q 1. (setopt completions-format 'vertical) 2.
Sanity
check: Typing `M-x auto- TAB' pops up the *Completions* buffer and you can
navigate up and down through each column by typing `M-<DOWN>' [...]
Content analysis details: (1.2 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.0 SPF_HELO_PASS SPF: HELO matches SPF record
0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
provider (stephen.berman[at]gmx.net)
0.0 T_SPF_PERMERROR SPF: test of record failed (permerror)
-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
no trust [2001:470:142:0:0:0:0:17 listed in] [list.dnswl.org]
1.2 SPOOFED_FREEMAIL No description available.
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
--=-=-=
Content-Type: text/plain
0. emacs -Q
1. (setopt completions-format 'vertical)
2. Sanity check: Typing `M-x auto- TAB' pops up the *Completions* buffer
and you can navigate up and down through each column by typing
`M-<DOWN>' and `M-<UP>' with wrapping from the last to the first
candidate and vice versa.
3. Now type `M-x abbrev- TAB', then repeatedly type `M-<DOWN>': after
the last candidate point wraps to the second instead of the first
candidate.
4. Now type `M-x dabbrev- TAB'. Now typing `M-<DOWN>' once moves to
last candidate, but repeating `M-<DOWN>' does not move point (in
particular, no wrapping). Now typing `M-<UP>' moves point back to
the first candidate, but typing `M-<UP>' again move point not to the
beginning of the last candidate but to the middle of the annotation
"(M-/)" affixed to the candidate.
The problems in 3 and 4 are due to the annotations in the *Completions*
buffer. The attached patch fixes these problems, so that navigation in
3 and 4 work as in 2 according to my testing. I think this patch should
be applied to the release branch because the type of navigation in
vertical format illustrated by 2 was introduced in Emacs 31 by commit
77ca60b48d01, which, however, failed to take annotations into account.
In GNU Emacs 32.0.50 (build 8, x86_64-pc-linux-gnu, GTK+ Version
3.24.52, cairo version 1.18.4) of 2026-08-14 built on strobelfs
Repository revision: cb22cfe1414bc3aa5a0e0b54f41f5b3453cb1f01
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101024
System Description: Linux From Scratch r13.0-156
Configured using:
'configure -C --with-native-compilation=no 'CFLAGS=-Og -g3'
PKG_CONFIG_PATH=/opt/qt6/lib/pkgconfig'
Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP
SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM
XINERAMA XINPUT2 XPM XRANDR GTK3 ZLIB
--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment
Content-Description: patch for 'last-completion'
diff --git a/lisp/simple.el b/lisp/simple.el
index 1f7d57f299a..137734d9f03 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -10176,8 +10176,11 @@ last-completion
(last-col (progn
(first-completion)
(goto-char (pos-eol))
- (goto-char (previous-single-property-change
- (point) 'mouse-face))
+ ;; Go to the beginning of the candidate. We loop
+ ;; to move past any completion annotations.
+ (while (not (get-text-property (point) 'mouse-face))
+ (goto-char
+ (previous-single-property-change (point) 'mouse-face)))
(current-column))))
(if (zerop last-col)
;; If there is only one column of completions, the last
--=-=-=--
Stephen Berman <stephen.berman@HIDDEN>:eliz@HIDDEN, spwhitton@HIDDEN, bug-gnu-emacs@HIDDEN.
Full text available.eliz@HIDDEN, spwhitton@HIDDEN, bug-gnu-emacs@HIDDEN:bug#81645; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.