Received: (at 80283) by debbugs.gnu.org; 22 Feb 2026 06:46:44 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 22 01:46:44 2026 Received: from localhost ([127.0.0.1]:36002 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vu3Ep-00046j-JX for submit <at> debbugs.gnu.org; Sun, 22 Feb 2026 01:46:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:47000) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vu3En-00046X-Id for 80283 <at> debbugs.gnu.org; Sun, 22 Feb 2026 01:46:42 -0500 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 1vu3Eg-0007PH-Mw; Sun, 22 Feb 2026 01:46:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=wIAh4qn665Zgr9VncQRsk/l049laxc+nMwpXex0ia1Y=; b=pLsuf5PeVVIGUfox0KLN LO9RAupF9pBP0k5bbcei1y2NBKVMCedMLvXFQ80TuDWdDttbDEsUpridQZpJrEoR971YnHrR7ufVo Ts5wL8OlyY8HKjrAIgJrWWWlA72c6Sfffw6MhBNcmsr/QHg02sDcgwbOeWec95bH6Hfv18NJHC8R9 kxK9OrHPeMx6j245VA41rHTVtxUVHah1iZF8hEE+5yp2WO3b24RtDMYV4V4AjfHcNiuM79MQaZFtU WdrgdBnB2lQHk/clmtExHJ215uNZT7Gq/bQRPTcySJLyIxAf9HNJXuycMHPOrL9gZAMndE12FvOTU Eeldq3xdb2O96Q==; Date: Sun, 22 Feb 2026 08:46:16 +0200 Message-Id: <86ldgle0nb.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> In-Reply-To: <CAN+1Hbrq3eb6gaSvEFyONpOy9ZzZtXB_KoGBzo1ixvHCBZMCAA@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Sat, 21 Feb 2026 17:14:16 -0500) Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN> <CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN> <87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN> <CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN> <864inektg6.fsf@HIDDEN> <877bsauf7n.fsf@HIDDEN> <86v7fuj5g2.fsf@HIDDEN> <878qcp1b4r.fsf@HIDDEN> <86jyw9jbyb.fsf@HIDDEN> <87v7fszmsg.fsf@HIDDEN> <86wm08ilvy.fsf@HIDDEN> <CAN+1Hbrq3eb6gaSvEFyONpOy9ZzZtXB_KoGBzo1ixvHCBZMCAA@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 80283 Cc: spwhitton@HIDDEN, monnier@HIDDEN, 80283 <at> debbugs.gnu.org, juri@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: -3.3 (---) > From: Stéphane Marks <shipmints@HIDDEN> > Date: Sat, 21 Feb 2026 17:14:16 -0500 > Cc: Juri Linkov <juri@HIDDEN>, spwhitton@HIDDEN, 80283 <at> debbugs.gnu.org, > monnier@HIDDEN > > That's immaterial. We could have deduplicate-alist-keys, I'm just > saying that maybe it should be built on top of a more generic > solution, where deduplication is decoupled from the format of the data > structure whose keys need to be deduplicated. > > I suggest this for seq.el if you think this is sufficiently generic. It consolidates at least list and alist handling in > one place. It's not clear what other types would qualify for an implementation. That's not what I had in mind. I envisioned having the code that accepts a string and optionally a hash table, and produces a unique variant of that string given what is already in the table. Then you could map this function over the keys on the data structure like alist. Anyway, that was a suggestion. If no one likes this decoupling of functionalities, I will shut up now.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 21 Feb 2026 22:14:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 21 17:14:32 2026
Received: from localhost ([127.0.0.1]:33105 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vtvFA-0006i4-1s
for submit <at> debbugs.gnu.org; Sat, 21 Feb 2026 17:14:32 -0500
Received: from mail-ua1-x929.google.com ([2607:f8b0:4864:20::929]:61895)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vtvF6-0006hg-B7
for 80283 <at> debbugs.gnu.org; Sat, 21 Feb 2026 17:14:30 -0500
Received: by mail-ua1-x929.google.com with SMTP id
a1e0cc1a2514c-94d5f90c8b6so1717277241.3
for <80283 <at> debbugs.gnu.org>; Sat, 21 Feb 2026 14:14:28 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1771712067; cv=none;
d=google.com; s=arc-20240605;
b=dYiDr1+7b6PQq9cRps6ninEr1iw/dDT7ql9w3kTaIAxt/IEUbEjwOpIlq3n0oPsV3U
7BYLPYUk4jF1pfYVSDz3l/0tD4v/rM70dmtOZ4VtQUbaJ5BP/R6Jt8JmiJRlqQi2yHPm
KLoD/So4iD+si5RqhzZDkKZeatJz+iu87i4GwSlOC+vUTIIK/WNj28SkbHzszINS95Ng
3/gXUoSB3WjXpLEU45pRlvsqp4jnYQlgrgWLyH2PnlP7Pt/bbO+3OrtOrDhM+rxPds77
u60gYfNzE012FmkfdULuHQn2vc1rPQrN54+nAh1z8HOuaXtxSt4KT1Ob/w/oG10DN9L1
aRbg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=czudWUYUNnS1wyQl1aigYTTiIIM6iWaKQDW0JRssvVA=;
fh=z8unYtXS/gYchB9gddd3s6Tj0a+gGiAZhVX+imYDG7o=;
b=Zt7iyiSp+d5kVep5QF2NVxOOPCror1hvW70GsalsdCgeyUrvvcpxbh7Qtly9q/Jw33
k+p9NeoK9hEEv7GsaXbTUH1C1J/18rU8KZYuYpgjEruxIUe8vU2il0VAXP3gJqAubpVk
RnOk1JLFaRlhBO3ys9IJoH2H0gMM1a2LKAftEVC620bXMEQDoyhSBfZom8LcJ38Nwx/I
s+nuNW2LaWETsplnYYgvN7vgN8LyYwHNDb8vRydQQJUJLcpJ8XGBortSXJEyR48BcKIE
LKgFOmqmjLyoc0UA0dYLyUnpqazho0vSE1W5bzJT50kVIUoev57jQzib0LDHch1vj3H0
G7Fg==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1771712067; x=1772316867; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=czudWUYUNnS1wyQl1aigYTTiIIM6iWaKQDW0JRssvVA=;
b=ERyjZBsScM20kHamsM4iUJKtb8LcmnJnpPv4jzNtlNadpcTr+m0VKTM16qnP6ndxPh
D7x+tEV1ss8YUyQvJVudHyPeS0snNu19+izZYDTb3A7pqVzDplFkgI6RVHQwwB16IaPu
+IQoYzlcgEFTgIO17AQDuQnevH9ze+UCL6lDqS0EGnxBrwa44q5ChLasAv/l54BQegkV
ToPMI8FOS6fHPlkicyFovRgL+Ak6usoBsFmgv9TEFpM8bDDvKZrRrR+KNEYPfopgbARr
2yApIYnD+0BysTTCvlxxZhA6Pbq11mgb/X43ML0e18wH7HPlYekEmwT3OqJS3DBm1GEN
wD+w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1771712067; x=1772316867;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=czudWUYUNnS1wyQl1aigYTTiIIM6iWaKQDW0JRssvVA=;
b=PgEY3AyHJDk/JpEUqUTIQsMAl2BJRToG9RvPX4l3260PiV2sHkvvMGm/5fiOAes7K+
JeWRWgtVL9h2nga8wZa61riau1kGhuURXc36sOxZkj+s8mh9PKmJajtj4aZH598bs+6P
qVq2679/R1Usw+f82wO9YvxIWfWzO5VMEkZtIS6HsUTz+iTREqXBVlLVMob2Ymv6vqNT
jbhpPJ15bjENjiqeLvLrzzAczygGNV30EKeyaF42igmaBLBlwGb8S+9rYyccsGFEaicZ
/LDLrCnMPqdhmjuAOyQ1Btrd4dXXIdhMKl6NreS5npUvJMF8v1b0NMMaNy93WK9y4TRW
Dulw==
X-Forwarded-Encrypted: i=1;
AJvYcCW+aBtaw98seAXsn6VykKEAcEZ77hReTSrZwiETTL44b+4DioZtSy0HV2VM3uFnMhEpD6h33g==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw8eOYrLwBkOF1Gz5eXRl/l86S6zGh8sZm82GbHNHgxpqdjMVGB
JIwAJKdX9fFNgXdBCeqARBio0rqEBMEDeK00/tEH+ivgNyziBVRa9w67j/yUQ8jhu4Z67nUZ2Vu
bjzpUXai2eTfiYDWaWzfuTo72CggFiGE=
X-Gm-Gg: AZuq6aKh8bGD9JfaQIGyHleSW7B2qrlUUqw/HTCFDaZGIkIjdRUhCWoliixWvuoTCA3
gEmOfzS5WChS8Rih4kZ0j3kWfkI8ECksQr/G6zL7FHElNR4To+Mwaio6HqZhpNbVD3Hm78gZodP
oZn1BeDiUFzSjAhomYQZNmeueWpnh+pWrmHReig55AGRHXkPXKRpRmbZIxzGFlmRLqpISoO0GAd
jb27UBc+/kMJe4BbiCmjQR7QheVK9bHU/NTucLE1+ZednH3UW9HnWdN50vlv7Ja+k38XIxhAfXn
PyixWKtXv7qGgMC/PG8oA8J4ZuqVZcBq7iMjgSSV2HDcK8SStjkRBEvoVYggJEw=
X-Received: by 2002:a05:6102:3f4a:b0:5fd:ff75:f437 with SMTP id
ada2fe7eead31-5feb3130fbcmr2599193137.33.1771712067491; Sat, 21 Feb 2026
14:14:27 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN>
<87pl66trp6.fsf@HIDDEN>
<CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN>
<87jywdc1y9.fsf@HIDDEN>
<CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN>
<86pl65n6u9.fsf@HIDDEN>
<CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN>
<86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN>
<865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN>
<CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN>
<87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN>
<CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN>
<864inektg6.fsf@HIDDEN> <877bsauf7n.fsf@HIDDEN>
<86v7fuj5g2.fsf@HIDDEN>
<878qcp1b4r.fsf@HIDDEN> <86jyw9jbyb.fsf@HIDDEN>
<87v7fszmsg.fsf@HIDDEN> <86wm08ilvy.fsf@HIDDEN>
In-Reply-To: <86wm08ilvy.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Sat, 21 Feb 2026 17:14:16 -0500
X-Gm-Features: AaiRm52kd6E-OzeF6Nj0tzoifdztJly_Ma9PtRZee8_1iogP0BDajXGc9tPgbwU
Message-ID: <CAN+1Hbrq3eb6gaSvEFyONpOy9ZzZtXB_KoGBzo1ixvHCBZMCAA@HIDDEN>
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000006d5d66064b5cdc5a"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80283
Cc: spwhitton@HIDDEN, monnier@HIDDEN, 80283 <at> debbugs.gnu.org,
Juri Linkov <juri@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: 0.0 (/)
--0000000000006d5d66064b5cdc5a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Thu, Feb 19, 2026 at 2:17=E2=80=AFPM Eli Zaretskii <eliz@HIDDEN> wrote:
> > From: Juri Linkov <juri@HIDDEN>
> > Cc: shipmints@HIDDEN, spwhitton@HIDDEN,
> 80283 <at> debbugs.gnu.org,
> > monnier@HIDDEN
> > Date: Thu, 19 Feb 2026 19:20:30 +0200
> >
> > >> (deduplicate '("a" "b" "a") 'list)
> > >> (deduplicate '(("a" . 1) ("b" . 2) ("a" . 3)) 'alist)
> > >>
> > >> than it worse than just:
> > >>
> > >> (deduplicate-list '("a" "b" "a"))
> > >> (deduplicate-alist '(("a" . 1) ("b" . 2) ("a" . 3)))
> > >
> > > Why is it worse?
> >
> > Because it's even not alist, but alist-keys.
> > So the argument of 'deduplicate' doesn't describe the list type.
> > Whereas 'deduplicate-alist-keys' clearly conveys the meaning.
>
> That's immaterial. We could have deduplicate-alist-keys, I'm just
> saying that maybe it should be built on top of a more generic
> solution, where deduplication is decoupled from the format of the data
> structure whose keys need to be deduplicated.
>
I suggest this for seq.el if you think this is sufficiently generic. It
consolidates at least list and alist handling in one place. It's not clear
what other types would qualify for an implementation.
This version also does not handle Stefan's suggestion to be passed bulk
keys. If y'all like this iteration, I will update tests and submit a patch
proper.
(cl-defgeneric seq-deduplicate-keys (sequence &optional suffix-format)
"Return a copy of SEQUENCE with deduplicated keys.
Non-string keys are converted to strings.
If SUFFIX-FORMAT is non-nil, it is a valid format-control string passed
to the function `format', and containing a single embedded \"%d\". It
defaults to \"<%d>\". If SUFFIX-FORMAT is a function, call it with two
arguments: the key to uniquify, the incrementing count. It should
return a string.
This does not modify SEQUENCE."
;; Handle nil SEQUENCE.
nil)
(cl-defmethod seq-deduplicate-keys ((sequence cons) &optional suffix-format=
)
;; Assume SEQUENCE is a list if its first element is not a cons.
;; Assume SEQUENCE is an alist if its first element is a cons.
(let* ((result '())
(alistp (consp (car sequence)))
(ht (make-hash-table :size (length sequence) :test #'equal)))
(dolist (elt sequence)
(let* ((key (if alistp (car elt) elt))
(key (if (stringp key) key (format "%S" key)))
;; Leave properties intact on returned unique keys.
(uniquified-key key)
(key (substring-no-properties key))
(count))
(when (setq count (gethash key ht))
(setq count (1+ count))
(setq uniquified-key (if (functionp suffix-format)
(funcall suffix-format elt count)
(format (concat "%s"
(or suffix-format "<%d>"))
uniquified-key count))))
(push (if alistp
(cons uniquified-key (cdr elt))
uniquified-key)
result)
(puthash key (or count 1) ht)))
(nreverse result)))
-St=C3=A9phane
--0000000000006d5d66064b5cdc5a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Thu, Feb 19, 2026 at 2:17=E2=80=AFPM Eli Zaretskii <<a href=3D"mailto=
:eliz@HIDDEN">eliz@HIDDEN</a>> wrote:</span></div></div><div class=3D"=
gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">> From: Juri Linkov <<a href=3D"mailto:juri@HIDDEN" ta=
rget=3D"_blank">juri@HIDDEN</a>><br>
> Cc: <a href=3D"mailto:shipmints@HIDDEN" target=3D"_blank">shipmints=
@gmail.com</a>,=C2=A0 <a href=3D"mailto:spwhitton@HIDDEN" target=3D=
"_blank">spwhitton@HIDDEN</a>,=C2=A0 <a href=3D"mailto:80283@debbug=
s.gnu.org" target=3D"_blank">80283 <at> debbugs.gnu.org</a>,<br>
>=C2=A0 =C2=A0<a href=3D"mailto:monnier@HIDDEN" target=3D"_bla=
nk">monnier@HIDDEN</a><br>
> Date: Thu, 19 Feb 2026 19:20:30 +0200<br>
> <br>
> >>=C2=A0 =C2=A0(deduplicate '("a" "b" &q=
uot;a") 'list)<br>
> >>=C2=A0 =C2=A0(deduplicate '(("a" . 1) ("b&q=
uot; . 2) ("a" . 3)) 'alist)<br>
> >> <br>
> >> than it worse than just:<br>
> >> <br>
> >>=C2=A0 =C2=A0(deduplicate-list '("a" "b&quo=
t; "a"))<br>
> >>=C2=A0 =C2=A0(deduplicate-alist '(("a" . 1) (&qu=
ot;b" . 2) ("a" . 3)))<br>
> ><br>
> > Why is it worse?<br>
> <br>
> Because it's even not alist, but alist-keys.<br>
> So the argument of 'deduplicate' doesn't describe the list=
type.<br>
> Whereas 'deduplicate-alist-keys' clearly conveys the meaning.<=
br>
<br>
That's immaterial.=C2=A0 We could have deduplicate-alist-keys, I'm =
just<br>
saying that maybe it should be built on top of a more generic<br>
solution, where deduplication is decoupled from the format of the data<br>
structure whose keys need to be deduplicated.<br></blockquote><div><br></di=
v><div class=3D"gmail_default" style=3D"font-family:monospace">I suggest th=
is for seq.el if you think this is sufficiently generic.=C2=A0 It consolida=
tes at least list and alist handling in one place.=C2=A0 It's not clear=
what other types would qualify for an implementation.</div><div class=3D"g=
mail_default" style=3D"font-family:monospace"><br></div><div class=3D"gmail=
_default" style=3D"font-family:monospace">This version also does not handle=
Stefan's suggestion to be passed bulk keys.=C2=A0 If y'all like th=
is iteration, I will update tests and submit a patch proper.</div><div clas=
s=3D"gmail_default" style=3D"font-family:monospace"><br></div><div class=3D=
"gmail_default" style=3D"font-family:monospace">(cl-defgeneric seq-deduplic=
ate-keys (sequence &optional suffix-format)<br>=C2=A0 "Return a co=
py of SEQUENCE with deduplicated keys.<br>Non-string keys are converted to =
strings.<br>If SUFFIX-FORMAT is non-nil, it is a valid format-control strin=
g passed<br>to the function `format', and containing a single embedded =
\"%d\".=C2=A0 It<br>defaults to \"<%d>\".=C2=A0 I=
f SUFFIX-FORMAT is a function, call it with two<br>arguments: the key to un=
iquify, the incrementing count.=C2=A0 It should<br>return a string.<br>This=
does not modify SEQUENCE."<br>=C2=A0 ;; Handle nil SEQUENCE.<br>=C2=
=A0 nil)<br><br>(cl-defmethod seq-deduplicate-keys ((sequence cons) &op=
tional suffix-format)<br>=C2=A0 ;; Assume SEQUENCE is a list if its first e=
lement is not a cons.<br>=C2=A0 ;; Assume SEQUENCE is an alist if its first=
element is a cons.<br>=C2=A0 (let* ((result '())<br>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0(alistp (consp (car sequence)))<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0(ht (make-hash-table :size (length sequence) :test #'equal=
)))<br>=C2=A0 =C2=A0 (dolist (elt sequence)<br>=C2=A0 =C2=A0 =C2=A0 (let* (=
(key (if alistp (car elt) elt))<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0(key (if (stringp key) key (format "%S" key)))<br>=C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;; Leave properties intact on =
returned unique keys.<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(u=
niquified-key key)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(key =
(substring-no-properties key))<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
=C2=A0(count))<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 (when (setq count (gethash k=
ey ht))<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq count (1+ count))<br>=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq uniquified-key (if (functionp suff=
ix-format)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(funcall =
suffix-format elt count)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(f=
ormat (concat "%s"<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(or suffix-forma=
t "<%d>"))<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0uniquified-key count))))<br>=C2=A0 =C2=A0 =C2=A0=
=C2=A0 (push (if alistp<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 (cons uniquified-key (cdr elt))<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 uniquified-key)<br>=C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 result)<br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 (puthash=
key (or count 1) ht)))<br>=C2=A0 =C2=A0 (nreverse result)))<br></div><div =
class=3D"gmail_default" style=3D"font-family:monospace"><br></div><div clas=
s=3D"gmail_default" style=3D"font-family:monospace">-St=C3=A9phane=C2=A0</d=
iv></div></div>
--0000000000006d5d66064b5cdc5a--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 19 Feb 2026 19:17:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 19 14:17:18 2026
Received: from localhost ([127.0.0.1]:54664 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vt9WV-0002qh-BX
for submit <at> debbugs.gnu.org; Thu, 19 Feb 2026 14:17:18 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:45658)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vt9WT-0002pm-3G
for 80283 <at> debbugs.gnu.org; Thu, 19 Feb 2026 14:17:14 -0500
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 1vt9WN-00079e-Nl; Thu, 19 Feb 2026 14:17:07 -0500
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=yd4ikYFi15WDbC2ZELgbJDe4XEPUVgHRXZPJd/8Igz0=; b=W3taTfl+KX1v
uqslDljcG23QieRakaYjRdPBNKKTKReq4bxTLl1SMNWLVr+AWDXQGCV4CrmluzsYRdwSDYINWtrzc
JLIRyas11QvtzcVgZV8paznIWxX8P5f+lg3fJjO3pdJuqibGSYvynoC5aID+94dQzvyiCkfP4NaOR
2roiP7PyLk5TzfcG3FLe0Ch3DXq49j0Nx+eRbJwsedCux/QpzlS3XYEhdOwenaafhtCOAN6n3cG2o
O9nJuYMLzzkIZOW7U86Q/9u7ZjjI4CyEDBMtKka9WIQ/8762lExYYv0UJOBmpnvNgp4/yHend0D5A
2I7MH8+RXES40qMI7bkgJw==;
Date: Thu, 19 Feb 2026 21:17:05 +0200
Message-Id: <86wm08ilvy.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Juri Linkov <juri@HIDDEN>
In-Reply-To: <87v7fszmsg.fsf@HIDDEN> (message from Juri Linkov on
Thu, 19 Feb 2026 19:20:30 +0200)
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN>
<87pl66trp6.fsf@HIDDEN>
<CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN>
<87jywdc1y9.fsf@HIDDEN>
<CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN>
<86pl65n6u9.fsf@HIDDEN>
<CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN>
<86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN>
<865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN>
<CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN>
<87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN>
<CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN>
<864inektg6.fsf@HIDDEN> <877bsauf7n.fsf@HIDDEN>
<86v7fuj5g2.fsf@HIDDEN> <878qcp1b4r.fsf@HIDDEN>
<86jyw9jbyb.fsf@HIDDEN> <87v7fszmsg.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 80283
Cc: monnier@HIDDEN, shipmints@HIDDEN, 80283 <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: -3.3 (---)
> From: Juri Linkov <juri@HIDDEN>
> Cc: shipmints@HIDDEN, spwhitton@HIDDEN, 80283 <at> debbugs.gnu.org,
> monnier@HIDDEN
> Date: Thu, 19 Feb 2026 19:20:30 +0200
>
> >> (deduplicate '("a" "b" "a") 'list)
> >> (deduplicate '(("a" . 1) ("b" . 2) ("a" . 3)) 'alist)
> >>
> >> than it worse than just:
> >>
> >> (deduplicate-list '("a" "b" "a"))
> >> (deduplicate-alist '(("a" . 1) ("b" . 2) ("a" . 3)))
> >
> > Why is it worse?
>
> Because it's even not alist, but alist-keys.
> So the argument of 'deduplicate' doesn't describe the list type.
> Whereas 'deduplicate-alist-keys' clearly conveys the meaning.
That's immaterial. We could have deduplicate-alist-keys, I'm just
saying that maybe it should be built on top of a more generic
solution, where deduplication is decoupled from the format of the data
structure whose keys need to be deduplicated.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 19 Feb 2026 17:27:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 19 12:27:43 2026
Received: from localhost ([127.0.0.1]:53919 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vt7oV-00064T-67
for submit <at> debbugs.gnu.org; Thu, 19 Feb 2026 12:27:43 -0500
Received: from mout-p-103.mailbox.org ([2001:67c:2050:0:465::103]:60546)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vt7oR-000647-Ml
for 80283 <at> debbugs.gnu.org; Thu, 19 Feb 2026 12:27:40 -0500
Received: from smtp102.mailbox.org (smtp102.mailbox.org
[IPv6:2001:67c:2050:b231:465::102])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
(No client certificate requested)
by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4fH0gl1GGGz9ssd;
Thu, 19 Feb 2026 18:27:31 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001;
t=1771522051;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=aKCue6XA4eWx4sfFwG/av1SVMiirkVDDns1Ob8O2qkI=;
b=Uot7HThxD4gKYAYu2EUSl1V3YA/urqpbgR2IoKmNdk2Cw4dEKehFB427JedatwIIXM2kdh
gdSQylrHeRKhyRQ8clMCKEVoODD2RZi5xdbOfEj7qZzB3nWPdMgfwg0d4uWxHUyiHTaO8Q
7DX3+/IoXwlofMBSD+VJ7/5LQLDv/7UHwhZ+7MOikhJwYrBH6rbrQsWajhNxHqmb1nNYVZ
762J+RoTxE3YEtFUSVmnGehINVk/Qx9YzggEwQaZmU5TMo6LOAJx7DzRCGhttPGEY6qP4p
sd4q9T8l4DgN+2D5JMgGu1sH8+6MNUQocA6kFXVYWVYcCjzr54GfgjcnsRgISw==
Authentication-Results: outgoing_mbo_mout; dkim=none;
spf=pass (outgoing_mbo_mout: domain of juri@HIDDEN designates
2001:67c:2050:b231:465::102 as permitted sender)
smtp.mailfrom=juri@HIDDEN
From: Juri Linkov <juri@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
In-Reply-To: <86jyw9jbyb.fsf@HIDDEN>
Organization: LINKOV.NET
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN>
<87pl66trp6.fsf@HIDDEN>
<CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN>
<87jywdc1y9.fsf@HIDDEN>
<CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN>
<86pl65n6u9.fsf@HIDDEN>
<CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN>
<86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN>
<865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN>
<CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN>
<87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN>
<CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN>
<864inektg6.fsf@HIDDEN> <877bsauf7n.fsf@HIDDEN>
<86v7fuj5g2.fsf@HIDDEN> <878qcp1b4r.fsf@HIDDEN>
<86jyw9jbyb.fsf@HIDDEN>
Date: Thu, 19 Feb 2026 19:20:30 +0200
Message-ID: <87v7fszmsg.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Rspamd-Queue-Id: 4fH0gl1GGGz9ssd
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80283
Cc: monnier@HIDDEN, shipmints@HIDDEN, 80283 <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 (-)
>> (deduplicate '("a" "b" "a") 'list)
>> (deduplicate '(("a" . 1) ("b" . 2) ("a" . 3)) 'alist)
>>
>> than it worse than just:
>>
>> (deduplicate-list '("a" "b" "a"))
>> (deduplicate-alist '(("a" . 1) ("b" . 2) ("a" . 3)))
>
> Why is it worse?
Because it's even not alist, but alist-keys.
So the argument of 'deduplicate' doesn't describe the list type.
Whereas 'deduplicate-alist-keys' clearly conveys the meaning.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 19 Feb 2026 14:51:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 19 09:51:41 2026
Received: from localhost ([127.0.0.1]:51598 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vt5NU-0002lp-Jq
for submit <at> debbugs.gnu.org; Thu, 19 Feb 2026 09:51:41 -0500
Received: from mail-vk1-xa35.google.com ([2607:f8b0:4864:20::a35]:50507)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.84_2) (envelope-from <shipmints@HIDDEN>)
id 1vt5NQ-0002lV-Tk
for 80283 <at> debbugs.gnu.org; Thu, 19 Feb 2026 09:51:39 -0500
Received: by mail-vk1-xa35.google.com with SMTP id
71dfb90a1353d-56711650601so862774e0c.1
for <80283 <at> debbugs.gnu.org>; Thu, 19 Feb 2026 06:51:36 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; t=1771512696; cv=none;
d=google.com; s=arc-20240605;
b=RlORt8oPgopd4lZEpxYX6jPOysLSP00kwMI03p7HCY5TFFY01Cs5TioTfZvWsKpPNz
Sap+ifFwIVTO12SdfLFRPOZcLcYGTC2POtjuwpsi2FPo61JhwSYiKWAbsvp3fu62OCaD
QPf0s6VoYpx9DWw7EXl8THsPEgCUkvvfiyg6khappgIAI7NqfeoySlNVhCpYCGHNOe31
ycBdbKYy50Zh2d0Pz+I5WrghtLl59x3xPsCIdsRKmalaxa1CDLC+8SPRrwDuIRyqed0d
W0kw1upj9CN17GTqzRKg9320QCYHkOn5hCtFT11697Vbqw2ihGG61pe1JZWX09GIA9sP
lxAw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;
s=arc-20240605;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:dkim-signature;
bh=whLtSgN8ub9eT83OQgCcSrRNkOpmASB/im5PQAtwc3o=;
fh=gQI3WecXgXZbaSmatbtehBMaNAt2lTk6+eqTEK6rcsE=;
b=XYbK0unHK+oTcBkgd4txzwTSNT5HJILpDxDBTun1RYuhN/pwLNB4xi+/n4h1HXM7g6
Y2R3ieEAz979xae4hry0y8Vba8er/cp+t1i4lPFf/iG8/d0595s23vl5UhURwlUdEWND
yZOxVsWgFAzah6FDP/GEmFHb1XnshwLN0rQOdds1KwCWengUBKfYo34EGxYF+j8uRObN
NfkNmlBL7w6D4MqaP6XLYm0wJQE11JlNztChG6W0iiCzG6OlFyD3Mksqm6V1XY6k5Ppc
EJk9mUwacnYYullVcrDx0yzTcBSJ8JCx5LK7ibrLkSlRE4xKscQWzm05asWBUNvRra2/
0I1w==; darn=debbugs.gnu.org
ARC-Authentication-Results: i=1; mx.google.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1771512696; x=1772117496; darn=debbugs.gnu.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=whLtSgN8ub9eT83OQgCcSrRNkOpmASB/im5PQAtwc3o=;
b=edLV+Cwbqt2CfmTS3tC0xggoU2AIrN2M5PDg8Au/NpGC4ZiqkxKvt8Z0cvsISlGkcM
NcG6vSUGhEpSx6smiQkdYHC8CajIvUBanopKRd9Y+b87o3ucTzjwY1ytOXcoxLKM6xRt
SJxXsVXgNYVWKA40cCW4FxZV3i8Pc+AmBFJvLwpGrHcdzZ2RWNAUUukjqFydizQMXoIg
58cYycdKg2kZ87kBMoDWAyxkaL6T7/5fpMRSkCN7VjTiSUYWWxCopuLLyL49WY/0rUb+
cYqhwA3P9zdknUsYo6Rq/V9QTjjK3mVGwTWyk8BUJApTj8s/Ugw0LO4l4HQ7uhYJNuPe
Vyyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1771512696; x=1772117496;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=whLtSgN8ub9eT83OQgCcSrRNkOpmASB/im5PQAtwc3o=;
b=wtBG4sDMqk/EbjaM3Yal/7vGhQ4crBKbMC1rgIZ5jDQa110ViNToVhCc1+GyeHJHq0
80XMxB9OfBu75O8z6nJWCvKRfp+zWc4pp4zSH0qTNJyC4Yh5W/Q3M49ZUyyvVoMHVvmO
r8rcT0cGYcMIz7MB0IrV+l6ct8fF7T4gBmP6mjgma918Axr4bEKpplOW6WI4JXqERm3I
1MXDcUiZVTT8jNMnhAztiuKLM7p8Sq6xwJr5CmTgAkUFD+GMczYrFjtSBMQLgB+Gp5cJ
6RSfmcvNYzN+wyg1AiHXnsSBWHDUW+bpPnW8kLv0zUZpqymAismqftv2APFvZaoHLzXX
qiMQ==
X-Forwarded-Encrypted: i=1;
AJvYcCVlptRX9tz4z8a3+qK7J+WKa0DU/QoCBwIU5uJdf4cHzGrYZ4eyI7KEXihnWH8oJgpeiYxucQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzFWxxsV1DrqXVTTxCgx7pEwZHW5InZN0rmG7zWE8VnwS8OWo4i
bkp7JrGB+3qyg3vkQpH3Ow8bTv/zhdwGS+34NRqwatQR20vdluQQTDSwDcCBJei3OiEWTgn0VJf
rzOlYvN/NAsRlqKRWHn6d1dTE588SNTo=
X-Gm-Gg: AZuq6aJbLAhhqxG7zKe5/HJN+rZ7gUpONHxjwW8/UkHm9wgNpKQ/ISd6A/wFEvc6+Fc
/7kCGC3nvb6AMlOKJzdGxcfc020+5g44kHOICg/CdFdy4A8tvwCHbBkBSSVPx5MTt6ARFqb7G24
nc9yWV2Q/z6Hcnqb+CeQB5Nyuqj0Z9bWQM2mojQqmnbPKwEv668pR2TXO+emaeMILHawpARaJzn
+VRc+KpDm6I4C4FyMZtOIT3eDeVc3qjXhTedXjGTRBp+PaBIO5prPEeNwEkEO68QHPxKocMuDb2
BJNMYDn6TipcjXQoR03gbLvKKo32Klwe4Mu+wGGYzj97d8vJld/PrtrkSkOZbQsDPSOzsmPluvF
cbcYxZTbvZ7WLfdLHRFQz
X-Received: by 2002:a05:6102:c52:b0:5ef:a9fb:f1f3 with SMTP id
ada2fe7eead31-5fe2ad913f8mr9311506137.11.1771512695924; Thu, 19 Feb 2026
06:51:35 -0800 (PST)
MIME-Version: 1.0
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN>
<87fr73p5v4.fsf@HIDDEN>
<CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN>
<87pl66trp6.fsf@HIDDEN>
<CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN>
<87jywdc1y9.fsf@HIDDEN>
<CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN>
<86pl65n6u9.fsf@HIDDEN>
<CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN>
<86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN>
<865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN>
<CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN>
<87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN>
<CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN>
<864inektg6.fsf@HIDDEN> <877bsauf7n.fsf@HIDDEN>
<86v7fuj5g2.fsf@HIDDEN>
<878qcp1b4r.fsf@HIDDEN> <86jyw9jbyb.fsf@HIDDEN>
In-Reply-To: <86jyw9jbyb.fsf@HIDDEN>
From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN>
Date: Thu, 19 Feb 2026 09:51:24 -0500
X-Gm-Features: AaiRm53RQE_bQsScopdmV8dMQrRtissnhVoLPJnEUMDaxrkkcdO0fRpLK-dbgRs
Message-ID: <CAN+1HbonHmr21Hjp_zDN4PNTM4PmRAHNLx7PT+=PM+L2n400cg@HIDDEN>
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000f4ab63064b2e702d"
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 80283
Cc: spwhitton@HIDDEN, monnier@HIDDEN, 80283 <at> debbugs.gnu.org,
Juri Linkov <juri@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: 0.0 (/)
--000000000000f4ab63064b2e702d
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Thu, Feb 19, 2026 at 4:54=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote:
> > From: Juri Linkov <juri@HIDDEN>
> > Cc: shipmints@HIDDEN, spwhitton@HIDDEN,
> 80283 <at> debbugs.gnu.org,
> > monnier@HIDDEN
> > Date: Thu, 19 Feb 2026 09:13:10 +0200
> >
> > Then the calling convention will be:
> >
> > (deduplicate '("a" "b" "a") 'list)
> > (deduplicate '(("a" . 1) ("b" . 2) ("a" . 3)) 'alist)
> >
> > than it worse than just:
> >
> > (deduplicate-list '("a" "b" "a"))
> > (deduplicate-alist '(("a" . 1) ("b" . 2) ("a" . 3)))
>
> Why is it worse? We pay a small price of having to specify an extra
> argument, but gain the ability to support many more situations where
> deduplication could be needed. That's a good trade-off in my book.
>
> For me, the important part is that the way we deduplicate is
> implemented only once, and it is agnostic to the actual Lisp data type
> whose keys need to be unique. Because deduplication is an operation
> on the keys, and the use of those keys is immaterial.
>
I'd proposed several ways to get specify a deduplication method: default
suffix-format <#>, specified suffix-format "(%d)", suffix-format function,
duplicate key batch handler (~per Stefan), gross batch handler (~per
Stefan).
Because my original function assumes an alist, I didn't have to guess what
the key is. If we implement something more generic, a function will likely
be needed to extract the desired key, where the default for an alist would
be its car, the default for a list is an element's identity (stringified).
I could get to this this weekend or next week but I'd appreciate some
additional guidance on just how generic this thing ought to be and where
you want such a function to live and be documented.
--000000000000f4ab63064b2e702d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">=
On Thu, Feb 19, 2026 at 4:54=E2=80=AFAM Eli Zaretskii <<a href=3D"mailto=
:eliz@HIDDEN">eliz@HIDDEN</a>> wrote:</span></div></div><div class=3D"=
gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">> From: Juri Linkov <<a href=3D"mailto:juri@HIDDEN" ta=
rget=3D"_blank">juri@HIDDEN</a>><br>
> Cc: <a href=3D"mailto:shipmints@HIDDEN" target=3D"_blank">shipmints=
@gmail.com</a>,=C2=A0 <a href=3D"mailto:spwhitton@HIDDEN" target=3D=
"_blank">spwhitton@HIDDEN</a>,=C2=A0 <a href=3D"mailto:80283@debbug=
s.gnu.org" target=3D"_blank">80283 <at> debbugs.gnu.org</a>,<br>
>=C2=A0 =C2=A0<a href=3D"mailto:monnier@HIDDEN" target=3D"_bla=
nk">monnier@HIDDEN</a><br>
> Date: Thu, 19 Feb 2026 09:13:10 +0200<br>
> <br>
> Then the calling convention will be:<br>
> <br>
>=C2=A0 =C2=A0(deduplicate '("a" "b" "a&quo=
t;) 'list)<br>
>=C2=A0 =C2=A0(deduplicate '(("a" . 1) ("b" . 2)=
("a" . 3)) 'alist)<br>
> <br>
> than it worse than just:<br>
> <br>
>=C2=A0 =C2=A0(deduplicate-list '("a" "b" "=
a"))<br>
>=C2=A0 =C2=A0(deduplicate-alist '(("a" . 1) ("b"=
; . 2) ("a" . 3)))<br>
<br>
Why is it worse?=C2=A0 We pay a small price of having to specify an extra<b=
r>
argument, but gain the ability to support many more situations where<br>
deduplication could be needed.=C2=A0 That's a good trade-off in my book=
.<br>
<br>
For me, the important part is that the way we deduplicate is<br>
implemented only once, and it is agnostic to the actual Lisp data type<br>
whose keys need to be unique.=C2=A0 Because deduplication is an operation<b=
r>
on the keys, and the use of those keys is immaterial.<br></blockquote><div>=
<br></div><div class=3D"gmail_default" style=3D"font-family:monospace">I=
9;d proposed several ways to get specify a deduplication method: default su=
ffix-format <#>, specified suffix-format "(%d)",=C2=A0 suff=
ix-format function, duplicate key batch handler (~per Stefan), gross batch =
handler (~per Stefan).</div><div class=3D"gmail_default" style=3D"font-fami=
ly:monospace"><br></div><div class=3D"gmail_default" style=3D"font-family:m=
onospace">Because my original function assumes an alist, I didn't have =
to guess what the key is.=C2=A0 If we implement something more generic, a f=
unction will likely be needed to extract the desired key, where the default=
for an alist=C2=A0would be its car, the default for a list is an element&#=
39;s identity (stringified).</div><div class=3D"gmail_default" style=3D"fon=
t-family:monospace"><br></div><div class=3D"gmail_default" style=3D"font-fa=
mily:monospace">I could get to this this weekend or next week but I'd a=
ppreciate some additional guidance on just how generic this thing ought to =
be and where you want such a function to live and be documented.</div></div=
></div>
--000000000000f4ab63064b2e702d--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 19 Feb 2026 14:03:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 19 09:03:22 2026
Received: from localhost ([127.0.0.1]:51165 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vt4ck-0005YA-CY
for submit <at> debbugs.gnu.org; Thu, 19 Feb 2026 09:03:22 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:41500)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vt4cg-0005Xq-Cp
for 80283 <at> debbugs.gnu.org; Thu, 19 Feb 2026 09:03:20 -0500
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id D75B08171D;
Thu, 19 Feb 2026 09:03:12 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1771509792;
bh=8dTT0ZEvkshrgS6gzfYmdBp8OIK3eqmnR00/y/VnJUI=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=bxhkntNLrszBTi7hpLgZdvwvLIozF6AJVLDuC7lSXsgbeF2Wcd2FoMNJlH4C3Rwut
A/j9wA04mSAV150CUQIBQ3/BzIMmZFmeHHLtdQM1p6gmHcQX0XRdgKHdx+hWqPQBxn
CHBVXtBUMMpCKRonOtlCDZcgg6uwg+G0CTrjylKoe5oWa9a+ZDkS/DYOyHyrBIJnID
tqTBCrdI62i08CyN0TS1m0r8XeMxNgmD1RIbl3h75z43stpmVkYzotHeTstqcMsosb
OPKSB45dk787UPz5ciJCE03AIVYpt5Ehk6Jw/GKJlcRPaRP+bZaxXKe9fWkYd1I+Q+
SV0RYiPemBDcg==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 192B0807D7;
Thu, 19 Feb 2026 09:03:12 -0500 (EST)
Received: from pastel (104-195-243-38.cpe.teksavvy.com [104.195.243.38])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id D38971211FA;
Thu, 19 Feb 2026 09:03:11 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Juri Linkov <juri@HIDDEN>
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
In-Reply-To: <878qcp1b4r.fsf@HIDDEN>
Message-ID: <jwv5x7sj0nf.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<87fr73p5v4.fsf@HIDDEN>
<CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN>
<87pl66trp6.fsf@HIDDEN>
<CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN>
<87jywdc1y9.fsf@HIDDEN>
<CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN>
<86pl65n6u9.fsf@HIDDEN>
<CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN>
<86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN>
<865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN>
<CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN>
<87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN>
<CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN>
<864inektg6.fsf@HIDDEN> <877bsauf7n.fsf@HIDDEN>
<86v7fuj5g2.fsf@HIDDEN> <878qcp1b4r.fsf@HIDDEN>
Date: Thu, 19 Feb 2026 09:03:11 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.147 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -1.5 (-)
X-Debbugs-Envelope-To: 80283
Cc: Eli Zaretskii <eliz@HIDDEN>, shipmints@HIDDEN, 80283 <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: -3.3 (---)
> This raises the error "Unknown specializer alist":
>
> (cl-defgeneric deduplicate (map)
> "Deduplicate MAP of TYPE.")
>
> (cl-defmethod deduplicate ((map alist))
> "Deduplicate MAP of an alist.")
Indeed, there is no type `alist`.
You'd need something like
(cl-defmethod deduplicate ((map cons))
"Deduplicate MAP of a list or an alist."
(if (consp (car map))
...
...))
Note also that this wouldn't quite fit into `map.el` because the MAP
argument here can also be a plain list of strings, which is not a "map"
in the sense used in `map.el`, and we presumably don't want to accept
plists here, contrary to what is usually accepted by `map.el` operations
as being maps.
=== Stefan
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 19 Feb 2026 10:26:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 19 05:26:21 2026
Received: from localhost ([127.0.0.1]:49013 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vt1Ei-0004s5-Oi
for submit <at> debbugs.gnu.org; Thu, 19 Feb 2026 05:26:21 -0500
Received: from sendmail.purelymail.com ([34.202.193.197]:34216)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <spwhitton@HIDDEN>)
id 1vt1Eg-0004rr-9R
for 80283 <at> debbugs.gnu.org; Thu, 19 Feb 2026 05:26:19 -0500
DKIM-Signature: a=rsa-sha256;
b=Ii2tJu0Xzgny93yfCmPxLxPaykByT2GHHXocKchyyFfL4S493Wmb5Jy5Fhk5w+CHjqU15q7RdKTnLBFBWfQB3XoEityOPzuHNyAcFChA/Lpyr8VVT4lPN9X3baBmlr+a3+J8ipY4yxpUa5kfFiAIOAmxqP7W7Qvt8gXWZQnodGCbl1do7IwpvwFCFb1yUorToBoIDOBDyC4qS865xC1Kluj84vU3hV5/j172Hk4SRK9nszIAr4yIOvXe6t23+W0d7edR6+MAnt6XQc+JN3n4mDAg3v49a7GaM+sQn3bo66vRA/tFP0mGB5HG+FtY3bt3i3++GZbdmneXaE1OQWw+Ow==;
s=purelymail2; d=spwhitton.name; v=1;
bh=bNXIJ2RktgfrXZkQ4Wbgzv232CMRUaqQa4wLg4dXoYA=;
h=Received:Received:From:To:Subject:Date;
DKIM-Signature: a=rsa-sha256;
b=G9BG9STcm2m9tUr/2kB0+iVxPRSG7CVXiJ96jhog6dkUefve9k4O1gpKWIDynFRWgv75RmGWDw3DSxJfupCEZ+T59TWEw6ujJHAUmyWuJMDcC3jYPat6q6yUFADWMtmJ+CgY0zkbHwXSUWnAFVCclba8UJmV28PkQfLukKQ+mueqWxvsh5GNZLYP+btHJUKQNccvvhwEeOOPZ4UMUQcCM51FBh8bxmpymUQSWZaLklX2lc+4sla89bas0UlVK+XIoU4qNpBlfOZVhQAdpEQRLr/YPn6aGH95wr7K9X79eSTJrF90iLqiWG+tO4vq5guG3NB/yFZnPmNmaFXqIYg9WA==;
s=purelymail2; d=purelymail.com; v=1;
bh=bNXIJ2RktgfrXZkQ4Wbgzv232CMRUaqQa4wLg4dXoYA=;
h=Feedback-ID:Received:Received:From:To:Subject:Date;
Feedback-ID: 20115:3760:null:purelymail
X-Pm-Original-To: 80283 <at> debbugs.gnu.org
Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id 1925166049;
(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
Thu, 19 Feb 2026 10:26:10 +0000 (UTC)
Received: by zephyr.silentflame.com (Postfix, from userid 1000)
id 6435394047A; Thu, 19 Feb 2026 10:26:08 +0000 (GMT)
From: Sean Whitton <spwhitton@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
In-Reply-To: <86jyw9jbyb.fsf@HIDDEN>
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN>
<87pl66trp6.fsf@HIDDEN>
<CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN>
<87jywdc1y9.fsf@HIDDEN>
<CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN>
<86pl65n6u9.fsf@HIDDEN>
<CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN>
<86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN>
<865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN>
<CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN>
<87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN>
<CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN>
<864inektg6.fsf@HIDDEN> <877bsauf7n.fsf@HIDDEN>
<86v7fuj5g2.fsf@HIDDEN> <878qcp1b4r.fsf@HIDDEN>
<86jyw9jbyb.fsf@HIDDEN>
Date: Thu, 19 Feb 2026 10:26:08 +0000
Message-ID: <87pl61av27.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.8 (/)
X-Debbugs-Envelope-To: 80283
Cc: shipmints@HIDDEN, monnier@HIDDEN, 80283 <at> debbugs.gnu.org,
Juri Linkov <juri@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.0 (-)
Eli Zaretskii [19/Feb 11:54am +02] wrote:
>> From: Juri Linkov <juri@HIDDEN>
>> Cc: shipmints@HIDDEN, spwhitton@HIDDEN, 80283 <at> debbugs.gnu.org,
>> monnier@HIDDEN
>> Date: Thu, 19 Feb 2026 09:13:10 +0200
>>
>> Then the calling convention will be:
>>
>> (deduplicate '("a" "b" "a") 'list)
>> (deduplicate '(("a" . 1) ("b" . 2) ("a" . 3)) 'alist)
>>
>> than it worse than just:
>>
>> (deduplicate-list '("a" "b" "a"))
>> (deduplicate-alist '(("a" . 1) ("b" . 2) ("a" . 3)))
>
> Why is it worse? We pay a small price of having to specify an extra
> argument, but gain the ability to support many more situations where
> deduplication could be needed. That's a good trade-off in my book.
>
> For me, the important part is that the way we deduplicate is
> implemented only once, and it is agnostic to the actual Lisp data type
> whose keys need to be unique. Because deduplication is an operation
> on the keys, and the use of those keys is immaterial.
I agree. Generally we prefer sequence-generic functions except where
sequence-generic functions cannot be fast enough.
--
Sean Whitton
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 19 Feb 2026 10:24:07 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 19 05:24:07 2026 Received: from localhost ([127.0.0.1]:48974 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vt1CY-0004fj-L9 for submit <at> debbugs.gnu.org; Thu, 19 Feb 2026 05:24:07 -0500 Received: from sendmail.purelymail.com ([34.202.193.197]:60480) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <spwhitton@HIDDEN>) id 1vt1CW-0004fA-7i for 80283 <at> debbugs.gnu.org; Thu, 19 Feb 2026 05:24:04 -0500 DKIM-Signature: a=rsa-sha256; b=Z98J36psuCJsrKRSxKccSTJBLD8yaYsafuYAP4NwtpsEzmrmgDo6G8qlQYzpJ8CEBKJ6Ni2TTb6nxzFXQJiCPMq/6e7ea/vHTEz23bXkceb53QiNIk9T0V53d23/hDbPYjucwreJiRpbbYPQdbEVxLqMnSNbuu0jlLCLKEGLjvAA2UzAl7fgFBfwRsMvALeEYW++NscJaMcmfLr2oY5gcK/H08CnGRfC5+JD6ik1AtgGiZANF2kgbBSaTYkOY4GIWuX90pJdVve1YmrOC+XXKgWFVE1NHlOR/y9eSXmkiwCgDvf+babERhV6Ep4nXzIhiqPOW1Oty/okqFR5xBnrtQ==; s=purelymail2; d=spwhitton.name; v=1; bh=lfHJIGx1Qya2RoOfNi/2Nhov5eFBolc7lPPnFA3q5jA=; h=Received:Received:From:To:Subject:Date; DKIM-Signature: a=rsa-sha256; b=P6k93Zu3M+P4oeOt14CxGkIDXPAggbmaTPA2Qhw8UuxtVvo6BdATmsKGtanP0/S402mjRUM9BdfMdXk63XqN4IRYMqgCRqotqb2RKlDmnbHWFvkfIt6ZP/sAk53tOzClTZXrZ1JtT5396jPiEEEhFEgQKmHn5g42HefnnacpHnb7r8JsC05u7Ht5yolLyJlazY+6JKuv1X1Y4idZrWpd3f457baqiEIprxGzGbfMaq3im1GAz1Gx1h1Y74aJVqd+SDiLoWB25MK4ACXNJMAVxZotm0OSL1okVMwzlNzn1j773hrDed0eaQIaFpJG0YY2YhQhCa40a9s4oWloZX/KQQ==; s=purelymail2; d=purelymail.com; v=1; bh=lfHJIGx1Qya2RoOfNi/2Nhov5eFBolc7lPPnFA3q5jA=; h=Feedback-ID:Received:Received:From:To:Subject:Date; Feedback-ID: 20115:3760:null:purelymail X-Pm-Original-To: 80283 <at> debbugs.gnu.org Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -977960859; (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Thu, 19 Feb 2026 10:23:58 +0000 (UTC) Received: by zephyr.silentflame.com (Postfix, from userid 1000) id 40E5794047A; Thu, 19 Feb 2026 10:23:56 +0000 (GMT) From: Sean Whitton <spwhitton@HIDDEN> To: Stefan Monnier <monnier@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys In-Reply-To: <jwvjywbl9v7.fsf-monnier+emacs@HIDDEN> References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN> <jwvjywbl9v7.fsf-monnier+emacs@HIDDEN> Date: Thu, 19 Feb 2026 10:23:56 +0000 Message-ID: <87tsvdav5v.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.8 (/) X-Debbugs-Envelope-To: 80283 Cc: Eli Zaretskii <eliz@HIDDEN>, shipmints@HIDDEN, 80283 <at> debbugs.gnu.org, Juri Linkov <juri@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.0 (-) Stefan Monnier [17/Feb 9:55am -05] wrote: >> I too am suspicious about adding these new functions right now. >> >> The most salient thing for me is this comment attached to >> create-file-buffer: >> >> ;; FIXME we really need to fold the uniquify stuff in here by default > > FWIW, that comment is a leftover I should have removed as part of > commit 1a724cc2d2e7. Thank you for the information. Could you go ahead and remove the FIXME? >> and how that function calls a uniquify-- internal function. > > That part of the code is still a bit ugly, indeed, and for historical > reasons it seems difficult to improve it. But it's unrelated to the > way specific unique names are chosen (instead it's related to how we > interface the uniquification process into the buffer creation routines). Okay, if there isn't actually further pending work here, that's significant. >> Point is, we have an outstanding problem that uniquify.el should not >> really be a separate library. It needs refactoring into files.el or >> simple.el or subr.el or some combination of those. > > You make an interesting observation that `uniquify.el` shares some of > its goals with the "imenu uniquify" being discussed, but note that the > shared part is fairly small: `uniquify.el` spends a lot of time and > effort doing the uniquifying dynamically (and lazily) as buffer are > created/killed/renamed (the last past being particularly delicate since > uniquifying itself causes renaming). > > Whereas the "imenu uniquify" only cares about finding "conflicts" among > a list and resolving them via "uniquification". > > I do see a potential for sharing some of the "uniquification" code, > admittedly, but that would/will be a fairly small part of `uniquify.el` > and I'm not sure how useful it would be for the "imenu uniquification". > > The part I think might be relevant is the part that takes a bunch of > buffers with the same base-name, each one associated to its directory, > and then tries to choose which part of the directories to add to each > buffer to make its name unique. E.g. from > > /.../trunk/lisp > /.../igc/src > > it will generate suffixes > > <lisp> > <src> > > but from > > /.../trunk/lisp > /.../igc/lisp > > it will pick > > <trunk> > <igc> > > Imenu sections can also have a "deep" hierarchical structure, so the > same kind of heuristic could be re-used. Such "deep" hierarchical > structures are very rare in Imenu, tho, so it's far from clear that it'd > be of great benefit. Thanks, this is helpful. -- Sean Whitton
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 19 Feb 2026 09:54:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 19 04:54:18 2026
Received: from localhost ([127.0.0.1]:48679 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vt0jh-00032X-MD
for submit <at> debbugs.gnu.org; Thu, 19 Feb 2026 04:54:18 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:53180)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vt0je-00032F-Jk
for 80283 <at> debbugs.gnu.org; Thu, 19 Feb 2026 04:54:15 -0500
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 1vt0jX-0000ga-Qt; Thu, 19 Feb 2026 04:54:07 -0500
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=7vLjGaxJAGWJyfbErYOdP763MARzwvxA4sSsCBk/Geg=; b=gfhOhavPxoih
SIhfP75vLpph6sNudxhMf4Bdz2OPpM0HmMGHAlmX6dhSpVxBhG7hQ0NsHqrSfMKX7bsJY1EXTyz6P
V+5t3ipyhZJbpE1VYnWQxBXT3bVpnSeHxq+In+UZlwtoKOnvfh0yPXW+tqiIO0Qs3urIiSfNClUE3
Vjx/SzNmdNuc1B96QOX6No3Jpom57TwdCRz0nUMzpGzZZY5w4MtyYxsikWPdkmPg5XVH9qSK0LTxH
Qup5TrEStWNfkjBI2XU9XMeViAZ1jqRqyH1FGHugf7PIi7Tn0+YkmnzzeTbgoCqn4wSbqcKAPfseC
fVgwBSTQjq4cbDoaDIUXuQ==;
Date: Thu, 19 Feb 2026 11:54:04 +0200
Message-Id: <86jyw9jbyb.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Juri Linkov <juri@HIDDEN>
In-Reply-To: <878qcp1b4r.fsf@HIDDEN> (message from Juri Linkov on
Thu, 19 Feb 2026 09:13:10 +0200)
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN>
<87fr73p5v4.fsf@HIDDEN>
<CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN>
<87pl66trp6.fsf@HIDDEN>
<CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN>
<87jywdc1y9.fsf@HIDDEN>
<CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN>
<86pl65n6u9.fsf@HIDDEN>
<CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN>
<86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN>
<865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN>
<CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN>
<87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN>
<CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN>
<864inektg6.fsf@HIDDEN> <877bsauf7n.fsf@HIDDEN>
<86v7fuj5g2.fsf@HIDDEN> <878qcp1b4r.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 80283
Cc: monnier@HIDDEN, shipmints@HIDDEN, 80283 <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: -3.3 (---)
> From: Juri Linkov <juri@HIDDEN>
> Cc: shipmints@HIDDEN, spwhitton@HIDDEN, 80283 <at> debbugs.gnu.org,
> monnier@HIDDEN
> Date: Thu, 19 Feb 2026 09:13:10 +0200
>
> Then the calling convention will be:
>
> (deduplicate '("a" "b" "a") 'list)
> (deduplicate '(("a" . 1) ("b" . 2) ("a" . 3)) 'alist)
>
> than it worse than just:
>
> (deduplicate-list '("a" "b" "a"))
> (deduplicate-alist '(("a" . 1) ("b" . 2) ("a" . 3)))
Why is it worse? We pay a small price of having to specify an extra
argument, but gain the ability to support many more situations where
deduplication could be needed. That's a good trade-off in my book.
For me, the important part is that the way we deduplicate is
implemented only once, and it is agnostic to the actual Lisp data type
whose keys need to be unique. Because deduplication is an operation
on the keys, and the use of those keys is immaterial.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 19 Feb 2026 07:21:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Feb 19 02:21:35 2026
Received: from localhost ([127.0.0.1]:47202 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vsyLu-0000u9-L0
for submit <at> debbugs.gnu.org; Thu, 19 Feb 2026 02:21:35 -0500
Received: from mout-p-103.mailbox.org ([80.241.56.161]:43570)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vsyLs-0000tl-Dy
for 80283 <at> debbugs.gnu.org; Thu, 19 Feb 2026 02:21:32 -0500
Received: from smtp102.mailbox.org (smtp102.mailbox.org [10.196.197.102])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
(No client certificate requested)
by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4fGlDM4nXvz9sWm;
Thu, 19 Feb 2026 08:21:23 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001;
t=1771485683;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=3+vpUCf3QcKKsTPOOrCYftVrq8Bw7DsJhMBMn8bP/F0=;
b=16R0gzM6KDiQFIWzTNG3J+pCR9A7wd7WVyM/h0PSuKz9CDL0TQKr65BzEdFsTmTGVicNfC
gBi//Kq2GbXShIqVrS13hmT118ELM6G2ec5WS0a/qi9AbL81OwNEJ0twdL6QiU/6lCZCq4
pQJUE/NeFM4gH8bXr+kWMotEw30HPwnR0jiy9IB/Utoe4W8pS1/6zNX+3hcSYoVRn0LQC6
dM4sa3msIzvFeeS46TpriHcAGNt9xhN5Z7UXlU7o96lCV4b2W7vF14N1epRv0LblOkvG4s
s2/WcIDoWW08531mnrl/WVucoDx20cMzScz9Gar8KJRuegoaQalKVCRsd773Ng==
From: Juri Linkov <juri@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
In-Reply-To: <86v7fuj5g2.fsf@HIDDEN>
Organization: LINKOV.NET
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN>
<87fr73p5v4.fsf@HIDDEN>
<CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN>
<87pl66trp6.fsf@HIDDEN>
<CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN>
<87jywdc1y9.fsf@HIDDEN>
<CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN>
<86pl65n6u9.fsf@HIDDEN>
<CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN>
<86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN>
<865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN>
<CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN>
<87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN>
<CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN>
<864inektg6.fsf@HIDDEN> <877bsauf7n.fsf@HIDDEN>
<86v7fuj5g2.fsf@HIDDEN>
Date: Thu, 19 Feb 2026 09:13:10 +0200
Message-ID: <878qcp1b4r.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80283
Cc: monnier@HIDDEN, shipmints@HIDDEN, 80283 <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 (-)
>> > So how about a map-SOMETHING function that would be able to
>> > deduplicate keys in any map-like sequence, not just in an alist?
>> > After all, all this cares about is strings in the sequence, nothing
>> > else?
>>
>> Writing seq functions like existing 'cl-defgeneric seq-uniq' and
>> 'cl-defmethod seq-uniq' would be too complicated for this simple purpose.
>
> Really? I'm surprised. It will definitely be more future-proof.
This raises the error "Unknown specializer alist":
(cl-defgeneric deduplicate (map)
"Deduplicate MAP of TYPE.")
(cl-defmethod deduplicate ((map alist))
"Deduplicate MAP of an alist.")
But if you meant an implementation like this from map.el:
(cl-defgeneric map-into (map type)
"Convert MAP into a map of TYPE.")
(cl-defmethod map-into (map (_type (eql list)))
"Convert MAP into an alist."
(map-pairs map))
(cl-defmethod map-into (map (_type (eql alist)))
"Convert MAP into an alist."
(map-pairs map))
Then adapting it to deduplication:
(cl-defgeneric deduplicate (map type)
"Deduplicate MAP of TYPE.")
(cl-defmethod deduplicate (map (_type (eql list)))
"Deduplicate MAP of a list.")
(cl-defmethod deduplicate (map (_type (eql alist)))
"Deduplicate MAP of an alist.")
Then the calling convention will be:
(deduplicate '("a" "b" "a") 'list)
(deduplicate '(("a" . 1) ("b" . 2) ("a" . 3)) 'alist)
than it worse than just:
(deduplicate-list '("a" "b" "a"))
(deduplicate-alist '(("a" . 1) ("b" . 2) ("a" . 3)))
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 18 Feb 2026 18:02:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 18 13:02:40 2026 Received: from localhost ([127.0.0.1]:39197 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vslsm-0007iB-4u for submit <at> debbugs.gnu.org; Wed, 18 Feb 2026 13:02:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:35154) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vslsk-0007hP-92 for 80283 <at> debbugs.gnu.org; Wed, 18 Feb 2026 13:02:39 -0500 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 1vslsd-0006VB-6E; Wed, 18 Feb 2026 13:02:31 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=LwKdMmvh+xNrqN1fs8FOqVmle8UFyL9yW76DvrTQwXc=; b=GxZ2YbBw6OuURq7Stss+ XTcL+cFENT81I8VZ1a7wUGHqb2uq0XptfmiPK6ne0xAxOoMmVqE8Imj7uNX5Lz85iYuJW3V3rohBy vOsbXdK8lt+HeAibzEXLfdaP2rMcfs9DFt8Hb+1N1I4E0KTjnxbFCPdaa7eKixDBLGajOY50PmDKr vRVBz146jDRPVkOxQG5kf8CXSLONTMHTcmv1/FVqWiDmoJ6TkQio0A52dog9+rvCjFgFsBzImmnQD 6ev+ax2Usvbe2IZNn6+pqMIrvxPNtk5HyiIV4oi6vHjOPDXbELx7AvwVPQ6IOxQLTbaIZH8G1F45g YZzxKKW7rjw6sg==; Date: Wed, 18 Feb 2026 20:02:21 +0200 Message-Id: <86v7fuj5g2.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Juri Linkov <juri@HIDDEN> In-Reply-To: <877bsauf7n.fsf@HIDDEN> (message from Juri Linkov on Wed, 18 Feb 2026 19:35:56 +0200) Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN> <CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN> <87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN> <CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN> <864inektg6.fsf@HIDDEN> <877bsauf7n.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 80283 Cc: monnier@HIDDEN, shipmints@HIDDEN, 80283 <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: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: Stéphane Marks <shipmints@HIDDEN>, > spwhitton@HIDDEN, > 80283 <at> debbugs.gnu.org, monnier@HIDDEN > Date: Wed, 18 Feb 2026 19:35:56 +0200 > > > So how about a map-SOMETHING function that would be able to > > deduplicate keys in any map-like sequence, not just in an alist? > > After all, all this cares about is strings in the sequence, nothing > > else? > > Writing seq functions like existing 'cl-defgeneric seq-uniq' and > 'cl-defmethod seq-uniq' would be too complicated for this simple purpose. Really? I'm surprised. It will definitely be more future-proof.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 18 Feb 2026 17:37:16 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 18 12:37:16 2026 Received: from localhost ([127.0.0.1]:38842 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vslUB-0002ql-NM for submit <at> debbugs.gnu.org; Wed, 18 Feb 2026 12:37:15 -0500 Received: from mout-p-202.mailbox.org ([80.241.56.172]:53396) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vslU9-0002qT-TB for 80283 <at> debbugs.gnu.org; Wed, 18 Feb 2026 12:37:14 -0500 Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-202.mailbox.org (Postfix) with ESMTPS id 4fGNxF3lVRz9t1g; Wed, 18 Feb 2026 18:37:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1771436225; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=tWeh6PNC4ESSDoKGk3//dxTAZ2KaNQDzk37s9HDrGw4=; b=YMk78lA4wCMbSSZABW/NTUikGCHRjm1fVKrxFhxum7xes90Bd0hiN2vy9x0lQXmXz4uRFU 1Xzws0RWBFj7c3yWc/KFKTOWhkLWF6jotjsODon8qCKiVGNWvDfY3so/jmPzilZ/+yVXNU 4js1czQ+Xb/5BsPsnYU11Ti1fFM6odQVg6W2GELJNYJPL0/sMSZUMdJqwzFRTj8ueXWNb0 9sKb9iX5K4uEYPrGX422Fi2lQYw3FL1aGbBYxZX3vLpT3QYOYm38h6BM27nzURoQdwASV6 eO3Upd4QJOeWTUOY4/o5iPpsDAyD16ANZFctb5ZFh1OHHjkfHu92tZIbiGPZNQ== Authentication-Results: outgoing_mbo_mout; dkim=none; spf=pass (outgoing_mbo_mout: domain of juri@HIDDEN designates 2001:67c:2050:b231:465::202 as permitted sender) smtp.mailfrom=juri@HIDDEN From: Juri Linkov <juri@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys In-Reply-To: <864inektg6.fsf@HIDDEN> Organization: LINKOV.NET References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN> <CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN> <87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN> <CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN> <864inektg6.fsf@HIDDEN> Date: Wed, 18 Feb 2026 19:35:56 +0200 Message-ID: <877bsauf7n.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Rspamd-Queue-Id: 4fGNxF3lVRz9t1g X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80283 Cc: monnier@HIDDEN, =?iso-8859-1?Q?St=E9phane?= Marks <shipmints@HIDDEN>, 80283 <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 (-) >> Please, not "dedupe". There's nothing wrong with "deduplicate", and >> it isn't too long. >> >> Revised patch attached. > > Thanks. But here is a thought: why do we have to support only alists? > What if tomorrow someone will need to deduplicate strings or symbols > in a list or an array? will we write yet another function? The first proposed names were uniquify-strings and uniquify-alist-keys. So let's add deduplicate-alist-keys. Then maybe later also deduplicate-strings. > So how about a map-SOMETHING function that would be able to > deduplicate keys in any map-like sequence, not just in an alist? > After all, all this cares about is strings in the sequence, nothing > else? Writing seq functions like existing 'cl-defgeneric seq-uniq' and 'cl-defmethod seq-uniq' would be too complicated for this simple purpose.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 18 Feb 2026 14:45:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 18 09:45:25 2026 Received: from localhost ([127.0.0.1]:36589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vsins-0006xY-Uk for submit <at> debbugs.gnu.org; Wed, 18 Feb 2026 09:45:25 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49422) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vsinp-0006xD-Dz for 80283 <at> debbugs.gnu.org; Wed, 18 Feb 2026 09:45:22 -0500 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 1vsing-0006LA-Gh; Wed, 18 Feb 2026 09:45:13 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=3jPPw+51H9lUX7BrY5qx0Cqchx1xgRbMtKB/YFhi0MU=; b=Nz+l2gD3kc1jRmQP28bg K/XPuH75OvFIKDRq3c2vhoD/YkguNMSs8EDmo0YHASMi61gTeII7+1fk0w1YHF+xmNm+edkD85KLX v1MIdg1nENCmlyPPMyjfmGnVKUEqjKAchKAvpFmX1JFlnou6+7d4ZOUVrchfLrvsa00SthaJZ143y Ufc8yWdQ8d2k9Vaaisq5e1ocwZdAmbanN1n7c4iR9iq9PCwse+0AyDNxcjMmlLiagih9bPlMpNE2Z SOsgPZHeObKWxydIJOWITn8b+BM4MkTiiJyAuSw87DVWty7xaNQVf++7uWdfYviCg9n2rBUEmBKZB xlCrTFuTz+gGVA==; Date: Wed, 18 Feb 2026 16:38:33 +0200 Message-Id: <864inektg6.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> In-Reply-To: <CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Wed, 18 Feb 2026 08:40:06 -0500) Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN> <CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN> <87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN> <CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 80283 Cc: spwhitton@HIDDEN, monnier@HIDDEN, 80283 <at> debbugs.gnu.org, juri@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: -3.3 (---) > From: Stéphane Marks <shipmints@HIDDEN> > Date: Wed, 18 Feb 2026 08:40:06 -0500 > Cc: Juri Linkov <juri@HIDDEN>, spwhitton@HIDDEN, 80283 <at> debbugs.gnu.org, > monnier@HIDDEN > > Please, not "dedupe". There's nothing wrong with "deduplicate", and > it isn't too long. > > Revised patch attached. Thanks. But here is a thought: why do we have to support only alists? What if tomorrow someone will need to deduplicate strings or symbols in a list or an array? will we write yet another function? So how about a map-SOMETHING function that would be able to deduplicate keys in any map-like sequence, not just in an alist? After all, all this cares about is strings in the sequence, nothing else? WDYT?
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 18 Feb 2026 13:40:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 18 08:40:25 2026 Received: from localhost ([127.0.0.1]:35915 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vshmy-0002x3-Gr for submit <at> debbugs.gnu.org; Wed, 18 Feb 2026 08:40:25 -0500 Received: from mail-vk1-xa33.google.com ([2607:f8b0:4864:20::a33]:49258) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vshmv-0002vs-39 for 80283 <at> debbugs.gnu.org; Wed, 18 Feb 2026 08:40:22 -0500 Received: by mail-vk1-xa33.google.com with SMTP id 71dfb90a1353d-567543b8989so2253811e0c.2 for <80283 <at> debbugs.gnu.org>; Wed, 18 Feb 2026 05:40:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771422020; cv=none; d=google.com; s=arc-20240605; b=DeBFqnXlHbZnPejR93Kkb44KY+iUJ1ArqDhNLaW3vhbb5Fc7Gf1L+2t1nAw4A85kvu QNlXJ87Nsv2Z0plDLFUBioV3bkayhlira0qKARgybx7e+eve3T7MGyH9jkfZ3IEV6ijz 8bd1VncOZcN/YqxpLp75rFT7lE3B0gK5NCAFfXAMuM+0Jb0+7scocWMOo4ZSgK/zCdSX ERz/YjwSm8twNKXqiBgJSFhWpH3fpSmvp1KEKV8lFh+9EitT83G7FJsxfFPec8CKYQ7V ia8NOQnW8dJtH9wnVRHjgnjyImqNCkXnElusZd1JjuFxFiCGVcPdbqLpRXDfrm/BHRKU q9eQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=gJE5hFO3JVgAficMiw8M/3BjjwQQ1cWSMOe08qqnnb0=; fh=TDUHjzD1QX1St8HdFSsLvtw+z5fNabkrSh4GllAPUas=; b=EDb/PcbnVH/2K5WLtblnczSKjyA701HIq6SvxWNcPottc7gO8f+IVZ9bXmi3G4fbSL hVxmaFe22pUAaTVnDxMlub5zYiu87vifSpIQMLw7HEx+1LvIxF20k/wiUOQ+GUzCxnlS JkPblW+CNgfWZdkIGStpz+zcLitVdkYxjLqUrz26DOZc+GIOdICxgSvxI4zU0whTb9Xu DYbtteyPEjdOG75Hbq175iGngyGuGRBhg0nYWF+QYSfmGT6I+2GQ8WtDXMmFWcHbfGwm YVva5RmB0mJPLlSZ5KbXCOn0gIets4/FWsSyHvM5I7dboT+zAWJLIx+OhiIvSKdXE1mH 5m+w==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771422020; x=1772026820; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=gJE5hFO3JVgAficMiw8M/3BjjwQQ1cWSMOe08qqnnb0=; b=kYLKH2HdU7j8f0JGKU1I4p5Mh2IaG8Qpx65DrMIvDOa1ckNegnA7UF2PdtSFRgzNAW SNJzDsSB/DztMO/mfGdCBtS+7ETXpTOrRlsGzgdqNgVPiy7YLTg5HRtOcaKmARSt9iYv rT7NlTnBoPQdGYjOouZT8NcGpMiElGmoWpJlejptach/xmLWQVY4XUWgA7mi6YtgByCJ rav+ZbzuYfkdmYDc8dG3S6mBBUZjGcVvRGJu7qjOwbOW7EZWpUt88wTnuFOVhgA8/6EH 8ByzCMIwW7Jm2+4RBfo2K0oRmUzl2wR/lHhU6sbW4onjmWo9bex1N6LlNwgpOTsxah4c Vlng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771422020; x=1772026820; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=gJE5hFO3JVgAficMiw8M/3BjjwQQ1cWSMOe08qqnnb0=; b=Fn6hyu2mLMupOhMPaz3y+o33m7squ7jElPWQnENzLYDBGQqE60Uvy1ruIrG63qsFN1 eo50IeN9dzpkaC1DFF1x5a49wX2iwsMhnydFwROrp3XvVIapo5mrkqZ9o0L8EjW1Uh2o P1F14JsQc8nnv9+sD6xbC2SzberVe9ZBdHmQdOOEe/EDaT0+sMhGHi+Nj4nww+4xAdN/ sYeXv+FUGL2HrhIBN0aUx1wJnuoSuWyTknq41Z9daeXx38VwkYgzRLJVf3x7ghru4buh hNA/UWcQTosvFEwZkV6Cp0A0Iqft3YrlHL9UnZyNXCw3PUei3lkdug1INYe4y7YWTxP9 OpDw== X-Forwarded-Encrypted: i=1; AJvYcCVy5v/ZZAPLSSIugIApp+He6gZ6qQ374wk08F6JdEQGQE9OB5mIP/z3PTZ1tlEvA3XU9QywRA==@debbugs.gnu.org X-Gm-Message-State: AOJu0YzmPpg1QU1vTslKQPMD9xekjyEiaCRA4EetgSaqGqQjMX0eKKHC A74IBsfq1998n+PlYC2qGqyqNZtyuCQCLIzAaB3EpL2hT6hgOpdBiWaw+IZ83NqeBJ2emn4JG8e VTYGkf392zyy6+fxxRTeJzd2yVoQHbVA= X-Gm-Gg: AZuq6aLxqjqLeFmFydjMZCbqQciXtz2023HN1BzFaYgr0xLv3rjtzpdF4VeNNm27QIA qjQcTWCvLUN47hNVxhU4Ry4XUnfLbbYABVqp65+9C1uh9s/Qt8qzQTRl07QUc8LnxsiQwZfDxAv e2TPlkS5A/rKGvpMeJKlm/FCoa2JHOh/9S0e6tcm5FRa31ExEn2SNaYBJSXQHpje/39AxW0e3DN L+xX9w+TBF/qDAcF7xBxVVFBRSoIQQy2uSxvRcS1bXhcSPQxAOh2YTL1y1cFp7EmBB3nqIjMxLR uhPqelupKAOVzwtzNGrld66uZlchOfWEAWLzvmN7rk4XmJpv5RXaVYjilICzcF8taeKyOz/wjoq t+vIWBk6FEiqFZNVPPXukceE2BGeTric= X-Received: by 2002:a05:6102:3f46:b0:5ed:675:e355 with SMTP id ada2fe7eead31-5fe16ee156dmr5942346137.27.1771422019716; Wed, 18 Feb 2026 05:40:19 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN> <CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN> <87seayebhy.fsf@HIDDEN> <868qcqkxn1.fsf@HIDDEN> In-Reply-To: <868qcqkxn1.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Wed, 18 Feb 2026 08:40:06 -0500 X-Gm-Features: AaiRm52MH-2pwKmBaD07tdOu1UxXYDRtiU6yuC7JY-GutiTkPm_lNVzMrVPPLyQ Message-ID: <CAN+1Hbp_bKaKwztH9hwJxLc2Mv12U_U+4oOJwOk+j=fQCpP8nA@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Eli Zaretskii <eliz@HIDDEN> Content-Type: multipart/mixed; boundary="0000000000003bae3e064b195442" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: spwhitton@HIDDEN, monnier@HIDDEN, 80283 <at> debbugs.gnu.org, Juri Linkov <juri@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: 0.0 (/) --0000000000003bae3e064b195442 Content-Type: multipart/alternative; boundary="0000000000003bae3b064b195440" --0000000000003bae3b064b195440 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Feb 18, 2026 at 8:08=E2=80=AFAM Eli Zaretskii <eliz@HIDDEN> wrote: > > From: Juri Linkov <juri@HIDDEN> > > Cc: Sean Whitton <spwhitton@HIDDEN>, Eli Zaretskii < > eliz@HIDDEN>, > > 80283 <at> debbugs.gnu.org, monnier@HIDDEN > > Date: Wed, 18 Feb 2026 09:50:33 +0200 > > > > It seems alist-dedupe-keys is the most suitable name to avoid confusion > > with the unification of buffer names. > > Please, not "dedupe". There's nothing wrong with "deduplicate", and > it isn't too long. > Revised patch attached. --0000000000003bae3b064b195440 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Wed, Feb 18, 2026 at 8:08=E2=80=AFAM Eli Zaretskii <<a href=3D"mailto= :eliz@HIDDEN">eliz@HIDDEN</a>> wrote:</span></div></div><div class=3D"= gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex">> From: Juri Linkov <<a href=3D"mailto:juri@HIDDEN" ta= rget=3D"_blank">juri@HIDDEN</a>><br> > Cc: Sean Whitton <<a href=3D"mailto:spwhitton@HIDDEN" targe= t=3D"_blank">spwhitton@HIDDEN</a>>,=C2=A0 Eli Zaretskii <<a h= ref=3D"mailto:eliz@HIDDEN" target=3D"_blank">eliz@HIDDEN</a>>,<br> >=C2=A0 =C2=A0<a href=3D"mailto:80283 <at> debbugs.gnu.org" target=3D"_blank"= >80283 <at> debbugs.gnu.org</a>,=C2=A0 <a href=3D"mailto:monnier@HIDDEN= a" target=3D"_blank">monnier@HIDDEN</a><br> > Date: Wed, 18 Feb 2026 09:50:33 +0200<br> > <br> > It seems alist-dedupe-keys is the most suitable name to avoid confusio= n<br> > with the unification of buffer names.<br> <br> Please, not "dedupe".=C2=A0 There's nothing wrong with "= deduplicate", and<br> it isn't too long.<br></blockquote><div><br></div><div class=3D"gmail_d= efault" style=3D"font-family:monospace">Revised patch attached.</div></div>= </div> --0000000000003bae3b064b195440-- --0000000000003bae3e064b195442 Content-Type: application/octet-stream; name="0001-New-function-alist-deduplicate-keys-bug-80283.patch" Content-Disposition: attachment; filename="0001-New-function-alist-deduplicate-keys-bug-80283.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mls2xa5l0> X-Attachment-Id: f_mls2xa5l0 RnJvbSA1OWQ0YmY3NzQ1ODQ2ZDEyMzEzYzlhNTQxMzI4MjYzYTFmZjYwZDcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgRmViIDIwMjYgMTM6NTQ6MTMgLTA1MDAK U3ViamVjdDogW1BBVENIXSBOZXcgZnVuY3Rpb24gJ2FsaXN0LWRlZHVwbGljYXRlLWtleXMnIChi dWcjODAyODMpCgpUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGRpZmZlcmVudGlhdGUgZHVw bGljYXRlIGNhbmRpZGF0ZXMKZm9yICdjb21wbGV0aW5nLXJlYWQnLgoKKiBsaXNwL2VtYWNzLWxp c3Avc3Vici14LmVsIChhbGlzdC1kZWR1cGxpY2F0ZS1rZXlzKTogTmV3IGRlZnVuLgoqIHRlc3Qv bGlzcC9taXNjLXRlc3RzLmVsIChtaXNjLXRlc3QtYWxpc3QtZGVkdXBsaWNhdGUta2V5cyk6IE5l dwp0ZXN0LgoqIGV0Yy9ORVdTOiBBbm5vdW5jZSB0aGUgbmV3IGZ1bmN0aW9uLgotLS0KIGV0Yy9O RVdTICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCiBsaXNwL2VtYWNzLWxpc3Avc3Vi ci14LmVsIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3QvbGlzcC9t aXNjLXRlc3RzLmVsICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMg Y2hhbmdlZCwgNjkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05F V1MKaW5kZXggMGRkMTVhZDE4YzMuLmQ0Y2QxMTU0ZWUzIDEwMDY0NAotLS0gYS9ldGMvTkVXUwor KysgYi9ldGMvTkVXUwpAQCAtMzE4Nyw2ICszMTg3LDE2IEBAIGRldGVybWluZWQgYnkgdGhlIG5l dyB1c2VyIG9wdGlvbiAncHVsc2UtZmFjZS1kdXJhdGlvbicuCiAKICoqIE1pc2NlbGxhbmVvdXMK IAorLS0tCisqKiogTmV3IGZ1bmN0aW9uICdhbGlzdC1kZWR1cGxpY2F0ZS1rZXlzJy4KK1RoaXMg ZnVuY3Rpb24gcmV0dXJucyBhIGNvcHkgb2YgYW4gYWxpc3Qgd2l0aCAiPE5VTUJFUj4iIGFwcGVu ZGVkIHRvIGl0cworZHVwbGljYXRlIGtleXMuICBBbnkgdGV4dCBwcm9wZXJ0aWVzIG9uIGtleXMg YXJlIHJldGFpbmVkLiAgTm9uLXN0cmluZwora2V5cyBhcmUgY29udmVydGVkIHRvIHN0cmluZ3Mu ICBZb3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwgc3VmZml4Citmb3JtYXQgc3RyaW5nIHRvIG92 ZXJyaWRlIHRoZSBkZWZhdWx0ICI8JWQ+IiwgZm9yIGV4YW1wbGUgd2l0aCAiKCVkKSIsCitvciBh IGZ1bmN0aW9uIHdoaWNoIGlzIHBhc3NlZCB0aGUga2V5IHRvIGRlZHVwbGljYXRlIGFuZCB0aGUg aW5jcmVtZW50ZWQKK2NvdW50LiAgVXNlIHRoaXMsIGZvciBleGFtcGxlLCB0byBkaWZmZXJlbnRp YXRlIGFtb25nIGR1cGxpY2F0ZQorY2FuZGlkYXRlcyBmb3IgJ2NvbXBsZXRpbmctcmVhZCcuCisK IC0tLQogKioqIFRoZSBmaXJzdCBjbGllbnQgZnJhbWUgbm93IHNob3dzIHdhcm5pbmdzIGZyb20g ZGFlbW9uIHN0YXJ0dXAuCiBXaGVuIHRoZXJlIGFyZSB3YXJuaW5ncyBlbWl0dGVkIGR1cmluZyBF bWFjcyBzdGFydHVwLCB1c3VhbGx5IGR1ZSB0bwpkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNw L3N1YnIteC5lbCBiL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKaW5kZXggYjM2YjE0YjliNTAu LmJhNWUyMzY1ZmZlIDEwMDY0NAotLS0gYS9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVsCisrKyBi L2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKQEAgLTY1Myw2ICs2NTMsMzggQEAgZW1hY3MtZXRj LS1oaWRlLWxvY2FsLXZhcmlhYmxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24g KGZvcndhcmQtbGluZSAtMSkgKHBvaW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgIChwb2lu dC1tYXgpKSkpKQogCis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIGFsaXN0LWRlZHVwbGljYXRlLWtl eXMgKGFsaXN0ICZvcHRpb25hbCBzdWZmaXgtZm9ybWF0KQorICAiUmV0dXJuIGEgY29weSBvZiBB TElTVCB3aXRoIFwiPE5VTUJFUj5cIiBhcHBlbmRlZCB0byBkdXBsaWNhdGUga2V5cy4KK0FMSVNU IGtleXMgc2hvdWxkIGJlIHN0cmluZ3MuICBUZXh0IHByb3BlcnRpZXMgb24ga2V5cyBhcmUga2Vw dCBpbnRhY3QuCitOb24tc3RyaW5nIGtleXMgYXJlIGNvbnZlcnRlZCB0byBzdHJpbmdzLgorCitO VU1CRVIgaXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW50ZWdlciBzdGFydGluZyBhdCAy IGZvciB0aGUgZmlyc3QKK2R1cGxpY2F0ZS4KKworSWYgU1VGRklYLUZPUk1BVCBpcyBub24tbmls LCBpdCBpcyBhIHZhbGlkIGZvcm1hdC1jb250cm9sIHN0cmluZyBwYXNzZWQKK3RvIHRoZSBmdW5j dGlvbiBgZm9ybWF0JywgYW5kIGNvbnRhaW5pbmcgYSBzaW5nbGUgZW1iZWRkZWQgXCIlZFwiLCBm b3IKK2V4YW1wbGUgXCIoJWQpXCIuICBJdCBkZWZhdWx0cyB0byBcIjwlZD5cIi4gIElmIFNVRkZJ WC1GT1JNQVQgaXMgYQorZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUg YWxpc3QgZWxlbWVudCB0byBkZWR1cGxpY2F0ZQorYW5kIHRoZSBpbmNyZW1lbnRlZCBjb3VudC4g IEl0IHNob3VsZCByZXR1cm4gYSBzdHJpbmcuIgorICAobGV0ICgodW5pcXVlcykKKyAgICAgICAg KGh0IChtYWtlLWhhc2gtdGFibGUgOnNpemUgKGxlbmd0aCBhbGlzdCkgOnRlc3QgIydlcXVhbCkp KQorICAgIChkb2xpc3QgKGVsdCBhbGlzdCkKKyAgICAgIChsZXQqICgoa2V5IChjYXIgZWx0KSkK KyAgICAgICAgICAgICAoa2V5IChpZiAoc3RyaW5ncCBrZXkpIGtleSAoZm9ybWF0ICIlUyIga2V5 KSkpCisgICAgICAgICAgICAgKHVuaXF1ZS1rZXkga2V5KSA7IExlYXZlIHByb3BlcnRpZXMgaW50 YWN0LgorICAgICAgICAgICAgIChrZXkgKHN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGtleSkpCisg ICAgICAgICAgICAgKGNvdW50IChnZXRoYXNoIGtleSBodCkpKQorICAgICAgICAod2hlbiBjb3Vu dAorICAgICAgICAgIChzZXRxIGNvdW50ICgxKyBjb3VudCkpCisgICAgICAgICAgKHNldHEgdW5p cXVlLWtleSAoaWYgKGZ1bmN0aW9ucCBzdWZmaXgtZm9ybWF0KQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChmdW5jYWxsIHN1ZmZpeC1mb3JtYXQgZWx0IGNvdW50KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZm9ybWF0IChjb25jYXQgIiVzIiAob3Igc3VmZml4LWZvcm1h dCAiPCVkPiIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZS1r ZXkgY291bnQpKSkpCisgICAgICAgIChwdXNoIChjb25zIHVuaXF1ZS1rZXkgKGNkciBlbHQpKSB1 bmlxdWVzKQorICAgICAgICAocHV0aGFzaCBrZXkgKG9yIGNvdW50IDEpIGh0KSkpCisgICAgKG5y ZXZlcnNlIHVuaXF1ZXMpKSkKKwogKHByb3ZpZGUgJ3N1YnIteCkKIAogOzs7IHN1YnIteC5lbCBl bmRzIGhlcmUKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9taXNjLXRlc3RzLmVsIGIvdGVzdC9saXNw L21pc2MtdGVzdHMuZWwKaW5kZXggODFlYmUxYTU4NjkuLmNiNmFkZTc5MjE2IDEwMDY0NAotLS0g YS90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbApA QCAtMzMzLDUgKzMzMywzMiBAQCBtaXNjLXRlc3QtdHJ1bmNhdGUtc3RyaW5nLXBpeGVsd2lzZS11 bmljb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAobGVuZ3RoICh0cnVuY2F0ZS1zdHJpbmct cGl4ZWx3aXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgbWF4LXBp eGVscyAoY3VycmVudC1idWZmZXIpKSkpKSkpKSkpKQogCisoZXJ0LWRlZnRlc3QgbWlzYy10ZXN0 LWFsaXN0LWRlZHVwbGljYXRlLWtleXMgKCkKKyAgKHNob3VsZCAoZXF1YWwgKGFsaXN0LWRlZHVw bGljYXRlLWtleXMKKyAgICAgICAgICAgICAgICAgICcoKSkKKyAgICAgICAgICAgICAgICAgJygp KSkKKyAgKHNob3VsZCAoZXF1YWwgKGFsaXN0LWRlZHVwbGljYXRlLWtleXMKKyAgICAgICAgICAg ICAgICAgICcoKCJhIiAiQSIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZSIgIkUi KSkpCisgICAgICAgICAgICAgICAgICcoKCJhIiAiQSIpICgiYiIgIkIiKSAoImMiICJDIikgKCJk IiAiRCIpICgiZSIgIkUiKSkpKQorICAoc2hvdWxkIChlcXVhbCAoYWxpc3QtZGVkdXBsaWNhdGUt a2V5cworICAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhIiAiQTIiKSAoImIiICJCIikg KCJjIiAiQyIpICgiZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKSkKKyAg ICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhPDI+IiAiQTIiKSAoImIiICJCIikgKCJjIiAi QyIpICgiZCIgIkQiKSAoImQ8Mj4iICJEMiIpICgiZDwzPiIgIkQzIikgKCJlIiAiRSIpKSkpCisg IChzaG91bGQgKGVxdWFsIChhbGlzdC1kZWR1cGxpY2F0ZS1rZXlzCisgICAgICAgICAgICAgICAg ICAnKCgiYSIgIkEiKSAoImEiICJBMiIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgi ZCIgIkQyIikgKCJkIiAiRDMiKSAoImUiICJFIikpCisgICAgICAgICAgICAgICAgICAiKCVkKSIp CisgICAgICAgICAgICAgICAgICcoKCJhIiAiQSIpICgiYSgyKSIgIkEyIikgKCJiIiAiQiIpICgi YyIgIkMiKSAoImQiICJEIikgKCJkKDIpIiAiRDIiKSAoImQoMykiICJEMyIpICgiZSIgIkUiKSkp KQorICAoc2hvdWxkIChlcXVhbCAoYWxpc3QtZGVkdXBsaWNhdGUta2V5cworICAgICAgICAgICAg ICAgICAgJygoImEiICJBIikgKCJhIiAiQTIiKSAoImIiICJCIikgKCJjIiAiQyIpICgiZCIgIkQi KSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKQorICAgICAgICAgICAgICAgICAgKGxh bWJkYSAoZWx0IGNvdW50KSAoZm9ybWF0ICIlc1slZF0iIChjYXIgZWx0KSBjb3VudCkpKQorICAg ICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImFbMl0iICJBMiIpICgiYiIgIkIiKSAoImMiICJD IikgKCJkIiAiRCIpICgiZFsyXSIgIkQyIikgKCJkWzNdIiAiRDMiKSAoImUiICJFIikpKSkKKyAg KHNob3VsZCAoZXF1YWwgKGFsaXN0LWRlZHVwbGljYXRlLWtleXMKKyAgICAgICAgICAgICAgICAg IGAoKCwocHJvcGVydGl6ZSAiYSIgJ2lkIDEpICJBIikgKCwocHJvcGVydGl6ZSAiYSIgJ2lkIDIp ICJBMiIpCisgICAgICAgICAgICAgICAgICAgICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIp ICgiZCIgIkQyIikgKCJkIiAiRDMiKSAoImUiICJFIikpKQorICAgICAgICAgICAgICAgICBgKCgs KHByb3BlcnRpemUgImEiICdpZCAxKSAiQSIpICgsKHByb3BlcnRpemUgImE8Mj4iICdpZCAyKSAi QTIiKQorICAgICAgICAgICAgICAgICAgICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgi ZDwyPiIgIkQyIikgKCJkPDM+IiAiRDMiKSAoImUiICJFIikpKSkKKyAgKHNob3VsZCAoZXF1YWwg KGFsaXN0LWRlZHVwbGljYXRlLWtleXMKKyAgICAgICAgICAgICAgICAgICcoKDEgIkEiKSAoMSAi QTIiKSAoMiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkIiAiRDIiKSAoImQiICJEMyIpICgi ZSIgIkUiKSkpCisgICAgICAgICAgICAgICAgICcoKCIxIiAiQSIpICgiMTwyPiIgIkEyIikgKCIy IiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkPDI+IiAiRDIiKSAoImQ8Mz4iICJEMyIpICgi ZSIgIkUiKSkpKSkKKwogKHByb3ZpZGUgJ21pc2MtdGVzdHMpCiA7OzsgbWlzYy10ZXN0cy5lbCBl bmRzIGhlcmUKLS0gCjIuNTEuMAoK --0000000000003bae3e064b195442--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 18 Feb 2026 13:08:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 18 08:08:45 2026 Received: from localhost ([127.0.0.1]:35605 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vshIL-0006ky-F5 for submit <at> debbugs.gnu.org; Wed, 18 Feb 2026 08:08:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:60490) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vshII-0006kg-RV for 80283 <at> debbugs.gnu.org; Wed, 18 Feb 2026 08:08:43 -0500 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 1vshIB-0008Bx-Se; Wed, 18 Feb 2026 08:08:35 -0500 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=SrHnX4xZpR+/WrHT3lMLFDDh8Qpv86h0NTVMfyGoFV8=; b=oRvMCuRixjf0 UwTALFHk9SAHsM28BxM2Q+BFg5YGWRNGQ+k44PodfQPiLKEM4XoHTFq6QVxy7+3FvK2DHvxi/AfVH wuen1SYZ1UEllRVJ7j124qNEDxu3IQaU5iNEhXUcV8JUVEs46KGCIBM//C8az4rhzUUfKmFPbcDKu Z0ctJaOQN2oM3V0JsKWO68caNZe3OncLC/H0kaNPe0ZNUM0mdyEVHu2APXNq+xFvqssiXT2jiPSqu u8NCBhXt9mnsUTwVBTJWr50b3rR4fdzOtfOEdO+dCSTJtwGfE8BKh5BiftBFlN/NUbUAjFk0djDr1 E3b3QB2Z9QN/ZuIBBW0pNQ==; Date: Wed, 18 Feb 2026 15:08:02 +0200 Message-Id: <868qcqkxn1.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Juri Linkov <juri@HIDDEN> In-Reply-To: <87seayebhy.fsf@HIDDEN> (message from Juri Linkov on Wed, 18 Feb 2026 09:50:33 +0200) Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN> <CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN> <87seayebhy.fsf@HIDDEN> X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 80283 Cc: monnier@HIDDEN, shipmints@HIDDEN, 80283 <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: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: Sean Whitton <spwhitton@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>, > 80283 <at> debbugs.gnu.org, monnier@HIDDEN > Date: Wed, 18 Feb 2026 09:50:33 +0200 > > It seems alist-dedupe-keys is the most suitable name to avoid confusion > with the unification of buffer names. Please, not "dedupe". There's nothing wrong with "deduplicate", and it isn't too long.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 18 Feb 2026 07:52:02 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Feb 18 02:52:02 2026 Received: from localhost ([127.0.0.1]:59745 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vscLq-00062B-8B for submit <at> debbugs.gnu.org; Wed, 18 Feb 2026 02:52:02 -0500 Received: from mout-p-201.mailbox.org ([80.241.56.171]:41560) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vscLm-00061Y-Jm for 80283 <at> debbugs.gnu.org; Wed, 18 Feb 2026 02:52:00 -0500 Received: from smtp1.mailbox.org (smtp1.mailbox.org [IPv6:2001:67c:2050:b231:465::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4fG7xy0656z9tcq; Wed, 18 Feb 2026 08:51:50 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1771401110; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=mF6edyX12PoUM6j+NYyBh2xLY2wMYnSjrdsYDc+wI2w=; b=tCAgGQhuZ7rN2pWEDKkLYV4CQxKE/lFiWdlavJkt6Oah8W+4MjN0rLgUh/9HcJ9VgVg8dq +rP6cwLw8Sk00c8pQ88yTvM3v0ATcizWNQcHUh9bx6ugS5Wu6N7ScIClZuA/FKBzaZ3wms cUixJr9mGkw9e6Abp0tQzgR1YIHBG+3m/EgqOh657Ycrem1+V3dNd3gUJJk3lIOK+amw2X mRLXd3T+NYvBumPfhs7uZFTvLx5IVZkGo1Bw7C5Q2p1JL8Mc/t+5bcgwDs8jMFQVk1nGT3 JAEBK3AGrIUz1qqlWDxx1aKp2r5C+cSVb5pWdVAr8jFHEFuDbFTg1KzZzC4rlQ== Authentication-Results: outgoing_mbo_mout; dkim=none; spf=pass (outgoing_mbo_mout: domain of juri@HIDDEN designates 2001:67c:2050:b231:465::1 as permitted sender) smtp.mailfrom=juri@HIDDEN From: Juri Linkov <juri@HIDDEN> To: =?iso-8859-1?Q?St=E9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys In-Reply-To: <CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN> Organization: LINKOV.NET References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN> <CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN> Date: Wed, 18 Feb 2026 09:50:33 +0200 Message-ID: <87seayebhy.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Rspamd-Queue-Id: 4fG7xy0656z9tcq X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80283 Cc: Eli Zaretskii <eliz@HIDDEN>, monnier@HIDDEN, 80283 <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 (-) > I sense my absconding with the prefix "uniquify-" has confused things. > It's really just a word and the alist key deduper doesn't have anything to > do with uniquifying buffer names. I suggest calling the function > "alist-dedupe-keys" and if we'd started with that name I'm not sure it > would be confused in the least with uniquify.el. > > If we defer a common alist key deduper, that suggests that either we > continue to live with poor user experience with completing-read in the > presence of duplicate candidates, or the alist-dedupe-keys function itself > ironically gets duplicated to help deal with each completing-read case. > > I'd prefer adding alist-dedupe-keys, leaving the uniquify package > considerations to be separate which I believe they are, and moving ahead to > improve completing-read user experience sharing a nice simple common key > deduping function. It seems alist-dedupe-keys is the most suitable name to avoid confusion with the unification of buffer names. Then instead of comparing it with 'generate-new-buffer-name' in the docstring and NEWS, you could mention that it's primary use is to differentiate among duplicate candidates for 'completing-read'.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 17 Feb 2026 14:55:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 17 09:55:28 2026
Received: from localhost ([127.0.0.1]:46471 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vsMU3-0002II-OS
for submit <at> debbugs.gnu.org; Tue, 17 Feb 2026 09:55:28 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:55347)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vsMU0-0002HZ-HD
for 80283 <at> debbugs.gnu.org; Tue, 17 Feb 2026 09:55:25 -0500
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id E9F8D1000BC;
Tue, 17 Feb 2026 09:55:18 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1771340117;
bh=cWHyuUBY3ZHdMuCqVTeHqF+MeU/M+OTquRwtN/aQWC0=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=ivyfOvlXA3H4m1erwvBhsz3gaC7OIOGKhORSOXEOZWhJljxzZzw8+wGgO9TdYMbbF
Pn502NfVP+BXUTnnmExXNz2og7kYwWtuwRw164ugE+gE5KJyBPJ9Y7CKgIZMDz1Pi9
GY3KM3yldocYPpWj/YDNpNByyRMomaahJYsI6Hvm2uqKKpwbTTjnCrAmhYbsmFSdwp
Iw+Xq72wLKTIXmXh0OAi4dJYTr07MtqQaLVOP8NDXo+0+85x6nkgJIHRx/RxipiTQS
0LADLZK1O20YNWOSmqqKlvPqh+7xoaY2U564ShnNvSxexYpy/fEXEO9hbNC06kcHqD
OuV1JnnE4F7EA==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id C2843100029;
Tue, 17 Feb 2026 09:55:17 -0500 (EST)
Received: from pastel (104-195-243-38.cpe.teksavvy.com [104.195.243.38])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 6E314120B8C;
Tue, 17 Feb 2026 09:55:17 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Sean Whitton <spwhitton@HIDDEN>
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
In-Reply-To: <87bjhnk7jd.fsf@HIDDEN>
Message-ID: <jwvjywbl9v7.fsf-monnier+emacs@HIDDEN>
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<87pl6ogao5.fsf@HIDDEN>
<CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN>
<87y0lc5q36.fsf@HIDDEN>
<CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN>
<CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN>
<877bsv61ix.fsf@HIDDEN>
<CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN>
<CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN>
<87fr73p5v4.fsf@HIDDEN>
<CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN>
<87pl66trp6.fsf@HIDDEN>
<CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN>
<87jywdc1y9.fsf@HIDDEN>
<CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN>
<86pl65n6u9.fsf@HIDDEN>
<CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN>
<86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN>
<865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN>
Date: Tue, 17 Feb 2026 09:55:16 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.219 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 80283
Cc: Eli Zaretskii <eliz@HIDDEN>, shipmints@HIDDEN, 80283 <at> debbugs.gnu.org,
Juri Linkov <juri@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: -3.3 (---)
Sean Whitton [2026-02-17 10:07:18] wrote:
> Eli Zaretskii [16/Feb 3:27pm +02] wrote:
>>> bug#73117: Imenu missing entries when flattening by group
>>> bug#80130: Add completing-read to tab-bar-closed-tabs
>>> bug#80192: Add undelete-frame-by-id
>>
>> Thanks. Three cases is not enough in my book, but if Sean is okay
>> with adding this, I won't object.
>>
>> Can we find a better name, though? Like, maybe start with "alist-"
>> not with "uniquify-"?
>
> I too am suspicious about adding these new functions right now.
>
> The most salient thing for me is this comment attached to
> create-file-buffer:
>
> ;; FIXME we really need to fold the uniquify stuff in here by default
FWIW, that comment is a leftover I should have removed as part of
commit 1a724cc2d2e7.
> and how that function calls a uniquify-- internal function.
That part of the code is still a bit ugly, indeed, and for historical
reasons it seems difficult to improve it. But it's unrelated to the
way specific unique names are chosen (instead it's related to how we
interface the uniquification process into the buffer creation routines).
> Point is, we have an outstanding problem that uniquify.el should not
> really be a separate library. It needs refactoring into files.el or
> simple.el or subr.el or some combination of those.
You make an interesting observation that `uniquify.el` shares some of
its goals with the "imenu uniquify" being discussed, but note that the
shared part is fairly small: `uniquify.el` spends a lot of time and
effort doing the uniquifying dynamically (and lazily) as buffer are
created/killed/renamed (the last past being particularly delicate since
uniquifying itself causes renaming).
Whereas the "imenu uniquify" only cares about finding "conflicts" among
a list and resolving them via "uniquification".
I do see a potential for sharing some of the "uniquification" code,
admittedly, but that would/will be a fairly small part of `uniquify.el`
and I'm not sure how useful it would be for the "imenu uniquification".
The part I think might be relevant is the part that takes a bunch of
buffers with the same base-name, each one associated to its directory,
and then tries to choose which part of the directories to add to each
buffer to make its name unique. E.g. from
/.../trunk/lisp
/.../igc/src
it will generate suffixes
<lisp>
<src>
but from
/.../trunk/lisp
/.../igc/lisp
it will pick
<trunk>
<igc>
Imenu sections can also have a "deep" hierarchical structure, so the
same kind of heuristic could be re-used. Such "deep" hierarchical
structures are very rare in Imenu, tho, so it's far from clear that it'd
be of great benefit.
> Doing that properly might surface certain interface functions which
> would allow elegant solutions to those other bugs in Imenu and in the
> passwd files thing. Those interfaces might be a little different to
> these new ones you want to add, but would still solve the problems
> elegantly.
I think the part of the uniquification functionality being suggested
that could be used right now from within the existing `uniquify.el`
would be unaffected by any change to `create-file-buffer`.
=== Stefan
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 17 Feb 2026 13:19:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 17 08:19:42 2026 Received: from localhost ([127.0.0.1]:45265 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vsKzO-0004zQ-43 for submit <at> debbugs.gnu.org; Tue, 17 Feb 2026 08:19:42 -0500 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:50214) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vsKzL-0004yw-6D for 80283 <at> debbugs.gnu.org; Tue, 17 Feb 2026 08:19:40 -0500 Received: by mail-vs1-xe30.google.com with SMTP id ada2fe7eead31-5fded42aa7cso3295252137.0 for <80283 <at> debbugs.gnu.org>; Tue, 17 Feb 2026 05:19:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771334378; cv=none; d=google.com; s=arc-20240605; b=JaG3WPAI+Cg1EiyutGu4ypyF2dHFiF/YKDxJuvW0Mm/s3YcW5BmCjoRtwCrYklAmv7 6OD3jY0OixBEYTHkgfO0nOZ0QvrrDtjvW6qxdauCZMBMastYzuypf3l9YMz6MxwxABi/ 82prUFcIqgP+ShCVLPfqJsXmfvRmV8d1XnY6Zoj2rJ60QPed9yE+tDR+mN+G9K1+Xnd9 vpKUpfxk8tgs1uvKKKQd5jB66cE/1QxM5TQjiJkiOzxF/GweZmBHNwtg8AHcq1J31iC1 TJM8mFP+E3Nn2TVHQ4cwNxIkQf54bpFrUHSc6Ja3eofY2m850JfGduUCemICuHUdwyjk 7SRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=m8RbDMUsCh42rckH9iQ1t3vNlmr6RnXS+nIhR5jom6w=; fh=fgPScqmmiG2U07BgpTDXM1Ab3f+HnHU/mjbRdD1T3tQ=; b=WTbFWdFvG9SE0xj18TIhJTGbMKVdugjPMZuUAnEqD5kCr2eW0T9F4PJz/zFL4K1CwO nCuxEax6R7tMpd/m0FiREJ3IRQ3VQ9s0aENzkm2adh2CScLk5LJwA5+zNm04Ir2QwrG3 qRe8Vui/6C6/V8170w9LvP5qx2Oq+8upHlmsXVb3//35b3hq29guX+VSPhpEILXpLGBJ sqxJy3OxVAvpMWIhf3vxAN+RqJeXPRH1bkHOmZr5eTCmguS4cvL6D8gaAOSpOIltTmX/ HrRIDOL0FfHH9+P5rtU2v25M4hgKthIA976yJZ/s533otsXjoZQiVK00BiRhsuQMKSsr iflw==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771334378; x=1771939178; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=m8RbDMUsCh42rckH9iQ1t3vNlmr6RnXS+nIhR5jom6w=; b=UZEaoVDMtKMGoykrj5AxUUhvRnHBDP6dCEO+O1TepjGW9K7/jgeMU3PyuYCAlkM9WG 1y2MLdDb0wx9SjeIFSeiKsvtuJ4JUOugncglOsJhxLYCzyhm7rQTnVdwvE/a78YHQAGL c8uebHjsMV5/J9rU0PG+WWws3ziv3ep4K0KQPMqfPbpWDd06pdQQRSVQdvLq1aw4UvXw 5U0Kg1xRrdpWTEspPgqhy1S8rxtqdhR2Yf1R/k6KvMpzyKL1JBbqIwYRdnJo/el6QiHG OseKIDVRL/z49A3Pfgodd7HM+2Fg9DUZ9vwRzZLkQIHhMNgquNkZ+op76AQkOJ8ShrDr 15nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771334378; x=1771939178; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=m8RbDMUsCh42rckH9iQ1t3vNlmr6RnXS+nIhR5jom6w=; b=aJ33O8SgiPwnJ6FCQVfXpbi6GVTQ4+iTalIudJy+BdFL7x97Td1vEQEGbJE2mFpj9m nSs+69ZUd3eMo6Vj5zSFUNPmM6FYjR2Yy1nGUL+R9SdmtV+PmZ6fKImCJ8hAjL0ounBQ 7d8Lgyr105QM29HIYWoQxhm/Brx1c6kUOdAVqmImzRDFq7sP9JanxDHImiIF2tFa4SH7 iZiX1h+JELijA28o47OFdcv4YmKi3qOzM0CbPrXHKNozjoFn9ihCrhAD7nMQ4tkm8OJO kpTATermc4AGyV7AkApmca8qVczVuRwHrv0SYCmkF0qp0eUYLsDaFJbVmKZceLnugizM YE3A== X-Forwarded-Encrypted: i=1; AJvYcCWYBOQ7HFLTzEgaAgX+82tIKv9ydH9C9Lx2GoObuaF+NHXBH5SPwCttZyiZNHvrCm0ZLtkEDA==@debbugs.gnu.org X-Gm-Message-State: AOJu0Yw2kGVfwQXVmONmjpkwDidDLHoiwRWJBuZnmJ10TizKLZjGQiog 5ab0HB6oCxNOZ1mEiLHWlomNeIGmtHna4f/fpmrYV4Yw1GzjBXoJMFB3U/JETiWZfEmJb7cQ9ZI PTeF47H2u0ajAbRlfREWtCkd736C25Cs= X-Gm-Gg: AZuq6aJhYSJjPJJt5VZWr/QQNTcx87J8E7jASAVUwbv9ybJj9WezAyv36Y/9wDvIHM+ aR51tjsy0XSsGtiULp9UCGA3tXJ67pW+JGZplrwnz5+yfm/rLnd4Ioew3e1d/xDx5KD+7rRkwDw O6LSIiNse+N0E63WAIS/lEUfaWlxSEDFL0k8YI0KPWHuF8GC7A9UDbFPD4bgLLBWmWSMu2HNDY0 FnkraYXt4XcHc1ObCcGml8BOyPY8BP5zyNxhTJZX9xsLMvlyXby6pjafdqCIsA/4difmyId+zHc Jz9mlsLFUHux6XSMLtlBNVkj6N8KgwLDN4gLhrF3owIst80AAmvgbDW/5cvLyUfRmLk4Pwf03WS FSAEGDGtHbOAMMarH1f0Q X-Received: by 2002:a05:6102:4410:b0:5ef:8ad:a3bb with SMTP id ada2fe7eead31-5fe2ad3b0e5mr3814451137.9.1771334378322; Tue, 17 Feb 2026 05:19:38 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> <87bjhnk7jd.fsf@HIDDEN> In-Reply-To: <87bjhnk7jd.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Tue, 17 Feb 2026 08:19:24 -0500 X-Gm-Features: AaiRm512xlsAcjHVSxET0hjOKnsQlvBM4kZnhNPq91auZZse2wQp75cOhaeu-NA Message-ID: <CAN+1Hbq3r=Z74SgNYszmGUA43bFeP-G+CPn+p8yEtci1khSeXQ@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Sean Whitton <spwhitton@HIDDEN> Content-Type: multipart/alternative; boundary="00000000000065fe77064b04ec2b" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: Eli Zaretskii <eliz@HIDDEN>, monnier@HIDDEN, 80283 <at> debbugs.gnu.org, Juri Linkov <juri@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: 0.0 (/) --00000000000065fe77064b04ec2b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Feb 17, 2026 at 5:07=E2=80=AFAM Sean Whitton <spwhitton@HIDDEN= ame> wrote: > Eli Zaretskii [16/Feb 3:27pm +02] wrote: > >> bug#73117: Imenu missing entries when flattening by group > >> bug#80130: Add completing-read to tab-bar-closed-tabs > >> bug#80192: Add undelete-frame-by-id > > > > Thanks. Three cases is not enough in my book, but if Sean is okay > > with adding this, I won't object. > > > > Can we find a better name, though? Like, maybe start with "alist-" > > not with "uniquify-"? > > I too am suspicious about adding these new functions right now. > > The most salient thing for me is this comment attached to > create-file-buffer: > > ;; FIXME we really need to fold the uniquify stuff in here by default > > and how that function calls a uniquify-- internal function. > > Point is, we have an outstanding problem that uniquify.el should not > really be a separate library. It needs refactoring into files.el or > simple.el or subr.el or some combination of those. > > Doing that properly might surface certain interface functions which > would allow elegant solutions to those other bugs in Imenu and in the > passwd files thing. Those interfaces might be a little different to > these new ones you want to add, but would still solve the problems > elegantly. > > If we add these new interfaces now we might find that we have to add > other, similar-but-subtly-different ones too, in order to complete the > refactoring. That would be a bad outcome for Emacs in the longer term. > > So I think we should not be adding any more interfaces that do > uniquify'ing stuff without first resolving that FIXME. > I sense my absconding with the prefix "uniquify-" has confused things. It's really just a word and the alist key deduper doesn't have anything to do with uniquifying buffer names. I suggest calling the function "alist-dedupe-keys" and if we'd started with that name I'm not sure it would be confused in the least with uniquify.el. If we defer a common alist key deduper, that suggests that either we continue to live with poor user experience with completing-read in the presence of duplicate candidates, or the alist-dedupe-keys function itself ironically gets duplicated to help deal with each completing-read case. I'd prefer adding alist-dedupe-keys, leaving the uniquify package considerations to be separate which I believe they are, and moving ahead to improve completing-read user experience sharing a nice simple common key deduping function. --00000000000065fe77064b04ec2b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Tue, Feb 17, 2026 at 5:07=E2=80=AFAM Sean Whitton <<a href=3D"mailto:= spwhitton@HIDDEN">spwhitton@HIDDEN</a>> wrote:</span></d= iv></div><div class=3D"gmail_quote gmail_quote_container"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex">Eli Zaretskii [16/Feb=C2=A0 3:27pm +02] wr= ote:<br> >> bug#73117: Imenu missing entries when flattening by group<br> >> bug#80130: Add completing-read to tab-bar-closed-tabs<br> >> bug#80192: Add undelete-frame-by-id<br> ><br> > Thanks.=C2=A0 Three cases is not enough in my book, but if Sean is oka= y<br> > with adding this, I won't object.<br> ><br> > Can we find a better name, though?=C2=A0 Like, maybe start with "= alist-"<br> > not with "uniquify-"?<br> <br> I too am suspicious about adding these new functions right now.<br> <br> The most salient thing for me is this comment attached to<br> create-file-buffer:<br> <br> =C2=A0 =C2=A0;; FIXME we really need to fold the uniquify stuff in here by = default<br> <br> and how that function calls a uniquify-- internal function.<br> <br> Point is, we have an outstanding problem that uniquify.el should not<br> really be a separate library.=C2=A0 It needs refactoring into files.el or<b= r> simple.el or subr.el or some combination of those.<br> <br> Doing that properly might surface certain interface functions which<br> would allow elegant solutions to those other bugs in Imenu and in the<br> passwd files thing.=C2=A0 Those interfaces might be a little different to<b= r> these new ones you want to add, but would still solve the problems<br> elegantly.<br> <br> If we add these new interfaces now we might find that we have to add<br> other, similar-but-subtly-different ones too, in order to complete the<br> refactoring.=C2=A0 That would be a bad outcome for Emacs in the longer term= .<br> <br> So I think we should not be adding any more interfaces that do<br> uniquify'ing stuff without first resolving that FIXME.<br></blockquote>= <div><br></div><div class=3D"gmail_default" style=3D"font-family:monospace"= >I sense my absconding with the prefix "uniquify-" has confused t= hings.=C2=A0 It's really just a word and the alist=C2=A0key deduper doe= sn't have anything to do with uniquifying buffer names.=C2=A0 I suggest= calling the function "alist-dedupe-keys" and if we'd started= with that name I'm not sure it would be confused in the least with uni= quify.el.</div><div class=3D"gmail_default" style=3D"font-family:monospace"= ><br></div><div class=3D"gmail_default" style=3D"font-family:monospace">If = we defer a common alist key deduper, that suggests that either we continue = to live with poor user experience with completing-read in the presence of d= uplicate candidates, or the alist-dedupe-keys=C2=A0function itself ironical= ly gets duplicated to help deal with each completing-read case.</div><div c= lass=3D"gmail_default" style=3D"font-family:monospace"><br></div><div class= =3D"gmail_default" style=3D"font-family:monospace">I'd prefer adding al= ist-dedupe-keys, leaving the uniquify package considerations to be separate= which I believe they are, and moving ahead to improve completing-read user= experience sharing a nice simple common key deduping function.</div></div>= </div> --00000000000065fe77064b04ec2b--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 17 Feb 2026 10:07:30 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 17 05:07:30 2026 Received: from localhost ([127.0.0.1]:43249 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vsHzO-00044B-CR for submit <at> debbugs.gnu.org; Tue, 17 Feb 2026 05:07:30 -0500 Received: from sendmail.purelymail.com ([34.202.193.197]:43786) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <spwhitton@HIDDEN>) id 1vsHzJ-00043Y-O2 for 80283 <at> debbugs.gnu.org; Tue, 17 Feb 2026 05:07:28 -0500 DKIM-Signature: a=rsa-sha256; b=gdt33QPu5JVrnR9CBvkTmR22iQ+tJTD9pVpdsSV/yY8bbzEuG8rWTlGpTP4uu8UhSPeaL/kAz5RM1jXSCk1loZb+ZpHmBN0AM6fBE6mE74Hj7F+vppPBwzwWrapt1xaPtq/SkFGO6TRFXP5a8feDY4WZfCjDC04/tFBBADPG0oTiNQoO8qDsAjqNIbnoTyAMZjDyNwT8bu09TDvm2RnDB4drdHGBGF84N3jff+QMVsJBP7deqJxDrhsIsyZL9Wv3zk5k1EkNe6H7l+NqK7lN3jAj0H5m6+CLTyi2UvpTqsFt9jeuBFqMFwEPnCZynP2whHGjpt1gJWxgo/aVT3pKuA==; s=purelymail1; d=spwhitton.name; v=1; bh=u2A7vHBJArVP5FwJ7UyBrhRaYuG4p0lmXc6vbqXhA34=; h=Received:Received:From:To:Subject:Date; DKIM-Signature: a=rsa-sha256; b=TQG1XTOSFZL0K/3y1hep8md4CKNTP6uxe5zDVue1fyx7rHirTtL6wtQpHI5DAZmEWdYTVCOokQp5kBPzgfisCrIp/KX0EYeByoydarkZKuVG30TsHlMx3VHDXhQnvzcKKTrPeqo8EnpM/aqGJKfw6pWSwsbOmArBSWSHSMn25tyOF/rUgmOvgQ+g77nC6uEfVxLpZ6O1/Gwgl5tK+m0b1ntwHG+0wNcmZWX1tN63C5+x9ZHqbyZlOGOEpwNmkC4Vnb4glHXJdxEEkE1B5VlBwv1QRw8HT/gKQNv82NDX7/juYrXNB91+0mIH2RXsri8sjb+6AG23X2h+uoQFmwEm9w==; s=purelymail1; d=purelymail.com; v=1; bh=u2A7vHBJArVP5FwJ7UyBrhRaYuG4p0lmXc6vbqXhA34=; h=Feedback-ID:Received:Received:From:To:Subject:Date; Feedback-ID: 20115:3760:null:purelymail X-Pm-Original-To: 80283 <at> debbugs.gnu.org Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -1309614179; (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Tue, 17 Feb 2026 10:07:19 +0000 (UTC) Received: by zephyr.silentflame.com (Postfix, from userid 1000) id 0358D9409B7; Tue, 17 Feb 2026 10:07:19 +0000 (GMT) From: Sean Whitton <spwhitton@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN>, Juri Linkov <juri@HIDDEN>, 80283 <at> debbugs.gnu.org, shipmints@HIDDEN, monnier@HIDDEN Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys In-Reply-To: <865x7wn7hw.fsf@HIDDEN> References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> Date: Tue, 17 Feb 2026 10:07:18 +0000 Message-ID: <87bjhnk7jd.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 80283 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 (-) Eli Zaretskii [16/Feb 3:27pm +02] wrote: >> bug#73117: Imenu missing entries when flattening by group >> bug#80130: Add completing-read to tab-bar-closed-tabs >> bug#80192: Add undelete-frame-by-id > > Thanks. Three cases is not enough in my book, but if Sean is okay > with adding this, I won't object. > > Can we find a better name, though? Like, maybe start with "alist-" > not with "uniquify-"? I too am suspicious about adding these new functions right now. The most salient thing for me is this comment attached to create-file-buffer: ;; FIXME we really need to fold the uniquify stuff in here by default and how that function calls a uniquify-- internal function. Point is, we have an outstanding problem that uniquify.el should not really be a separate library. It needs refactoring into files.el or simple.el or subr.el or some combination of those. Doing that properly might surface certain interface functions which would allow elegant solutions to those other bugs in Imenu and in the passwd files thing. Those interfaces might be a little different to these new ones you want to add, but would still solve the problems elegantly. If we add these new interfaces now we might find that we have to add other, similar-but-subtly-different ones too, in order to complete the refactoring. That would be a bad outcome for Emacs in the longer term. So I think we should not be adding any more interfaces that do uniquify'ing stuff without first resolving that FIXME. -- Sean Whitton
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 16 Feb 2026 13:55:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 16 08:55:53 2026 Received: from localhost ([127.0.0.1]:60036 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrz4r-00043p-3a for submit <at> debbugs.gnu.org; Mon, 16 Feb 2026 08:55:53 -0500 Received: from mail-vs1-xe31.google.com ([2607:f8b0:4864:20::e31]:53520) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vrz4n-00043g-9x for 80283 <at> debbugs.gnu.org; Mon, 16 Feb 2026 08:55:51 -0500 Received: by mail-vs1-xe31.google.com with SMTP id ada2fe7eead31-5f178c83a3dso619601137.3 for <80283 <at> debbugs.gnu.org>; Mon, 16 Feb 2026 05:55:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771250148; cv=none; d=google.com; s=arc-20240605; b=dh9IKqQGAO0+XaCPXMmviw6YXS6qijAQo7+nPFKLDLlnhcjFlx9vpAnzy5MpIf0LQT 7g3zZM3lKgW485BZwwlEctyWnoeF1v47+0312AnZc92plpNoWPAgb4kwYJWD1D8vsY6o Zib71VrpYjGHWPJ9mEnl3/BZrptQ2Aum3TuRmSf11iD3TQEjR6OhqxWQDCmiRISHzeVs JqHZobvkGveX++GU6rvPIN5WumgxuqvpBZPyTaM4XqucwYornhragXccDjqwSSDye3CG ibwwde9u22zLRTcqadtaNeQCDUem1m4rxZrLv+VfHhCypVeShXLWKZR0S+uf0WcZWq7U 84KQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=EB/D3zTtDrnfcJl+eCLOYupKguYRgADdsk5M9AqbBn0=; fh=7fjW9IbSEqSw/NejV021PBo8xhDDXoJVG9/9dk2QhY0=; b=fLIuYg6Y0Ogdjprust0LFfK+zRmWf8f4LOsI/AOYL7bnW3Yrjr7sObB4LHmFKMMq8g CSQF8vz0ZVv71Zw8ZXi2Cm+eQMa2/LR27dXgBTgJ0f7a1KNu76EVsov4Ux6JbbitPCTL EOgq9hzv+b52nP55yi8MGm24B3WruE+5SjWP+Yj94V32Drsv9jIBarwfOUjuDfDsBagT zYz8GbwpgS9ziAbehX7qmmcbxPfEEvz+lqana84B8s3V/weCRxHMS+jb4h3STPxo+DPJ Wd8a5uMxWwLdtFzfbEdlbp6QnVXByhxXUrs7X1/bbpfglAs7twSKCAPdltXanGh2KJOk rcsg==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771250148; x=1771854948; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=EB/D3zTtDrnfcJl+eCLOYupKguYRgADdsk5M9AqbBn0=; b=BZg/bwYsoHrmEmkGsauo17OfOuI2yGRvhrD6SUPlCL1ar7EjXgUDVeHOwDJHacsLkC Wkjn2o7XH0rvkQLBN9a+648845eldJtsiKVEz4tt7PN7LeiLLwb7b+WRKCzUXHz0A/b/ UblbViHhe6aX52w+5zqiVk++bl6qBr4mL2jPgW5AdczakqhFgZu95LahKFIklO2LMEc1 p8ErecPR5+JkAq6848oEoT+2S6WAfik4Axrckzdq8xDxni5VgMitVQdqZTsN0Rwn7hc9 ZxSKHIkoqB4s2oGTwOqnICzOyMOb/N9JEpIvnH7qyfGbwBvXQ550UkEADrrcvn7iI4Dn 3eew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771250148; x=1771854948; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=EB/D3zTtDrnfcJl+eCLOYupKguYRgADdsk5M9AqbBn0=; b=BGqGNZcWrqGqvpKoKDcmZ9l3+y9DG+D7yJlbjiBmCQcGRrEREhzNJTE3uH7ct10B0Z qrKGPdGg9S3OrHJpIQqh2VfCixI2FG38MQbLr1Rzw9jRpLSy0JUzmclv2WjOv3g2TsaK wW+eyahad5jXKXyc9Lb0XNGPTp9iXTN5LsckGtf/suOXQ3PtbbrQI0rV+kNYAI8I39Fm 24iT0oSS4jpOlUSJBdii/jupZUUftBvR01rr6hFOt70mEViBYJ+eItqfZnjdh453u/Bg 2ch9ej5/4He9uSsFzkU9+/FIekUwJRd6a5TGDjre49OpVy+oEnHZjrEKMfycHFeJpiHF MZXQ== X-Forwarded-Encrypted: i=1; AJvYcCXGSZLO2n1IyxUHVzUZqxwTIAKhR2ZJHQR9RB8hcvIApHmHYt6LcnJlzpel9OU6h7+jfoGtOQ==@debbugs.gnu.org X-Gm-Message-State: AOJu0YyVlzFzuZBh8Z5RgPS5uFE3jGWhyBDcbwpCDx55OHwGFR1SB7kw NxSPFXvJhERMls9jql4Xut/VYglgORn5oJKQ3q3sxMhkImRZ9C7OZlniB+oKz/+t4HzVloR9wM4 Ht/IQbOUKUsLIoI9j912P39Do6glJoSw= X-Gm-Gg: AZuq6aItMAYrdOqBaQNRdqWUCL5Sg33rkmCOsLz9A1Y7wHRnF7hftsLh1UKuGD4SO7i XvYUHEhax0MJvtSGVR7FPCF+fqbpsCBDJbft2nWBvYnxjqmgf4D+FWl6dlOvPtUvky7ptB3IXsG ZGBe+172WGSeiNzFXFn+vAFdpqCxJZrjLHUU91pIBTkvtfZzztS+1QcUC9acMfN87pea+Ho9M2f JOAjd2DtGhccE7KvQFooU5A2UduztkFU3Wky3DLjUgqnnOn/ZQYnB7d/z+Z6GAdRMBcwEshqh36 AZ5vFX8iLa1O6X74WaypE37kVtM59qyUV0vEE/Op51eJkHPq0tKS49vEO4qNMobegZdGL2Q7AIS wkmKzXv9AQcxSvjqGY6yR X-Received: by 2002:a05:6102:50a4:b0:5fd:eff4:825 with SMTP id ada2fe7eead31-5fe2aed01aamr2347195137.26.1771250148375; Mon, 16 Feb 2026 05:55:48 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> <865x7wn7hw.fsf@HIDDEN> In-Reply-To: <865x7wn7hw.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Mon, 16 Feb 2026 08:55:36 -0500 X-Gm-Features: AaiRm50Eju9no1a-gm_afZBni0HkSqI5au6sDwl-JACi5WoqqShutzMoYiQoISA Message-ID: <CAN+1HboYw2kqDf_vKmvbnAhR6L_eFDo1FNWEAKHu6zhkBf6cqg@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Eli Zaretskii <eliz@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000e70097064af14f5e" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: spwhitton@HIDDEN, monnier@HIDDEN, 80283 <at> debbugs.gnu.org, Juri Linkov <juri@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: 0.0 (/) --000000000000e70097064af14f5e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Feb 16, 2026 at 08:27 Eli Zaretskii <eliz@HIDDEN> wrote: > > From: Juri Linkov <juri@HIDDEN> > > Cc: St=C3=A9phane Marks <shipmints@HIDDEN>, > > spwhitton@HIDDEN, > > monnier@HIDDEN, 80283 <at> debbugs.gnu.org > > Date: Mon, 16 Feb 2026 09:56:16 +0200 > > > > >> > +*** New function 'uniquify-alist-keys'. > > >> > +This function is similar to 'generate-new-buffer-name'. > > >> > +'uniquify-alist-keys' returns a copy of an alist with "<NUMBER>" > > >> > +appended to its duplicate keys. Text properties are retained, a= nd > > >> > +non-string keys are first converted to strings. You can provide > an > > >> > +optional suffix format string to override the default "<%d>", fo= r > > >> > +example with "(%d)", or a function which is passed the key to > uniquify > > >> > +and the incrementing count. Use this, for example, to > differentiate > > >> > +among duplicate candidates 'completing-read'. > > >> > > >> Thanks, but am I the only one who asks himself why such a peculiar > > >> function is needed as part of Emacs core? How many times some Lisp > > >> program needed such functionality? If it's rare enough, I don't > think > > >> we should have it in core. > > >> > > >> Sean, WDYT? > > >> > > >> Juri and I have identified several places already in frame.el, > > >> tab-bar.el, imenu.el where we'd use this now. > > > > > > Please point to them, or tell in which message you mentioned them. > > > I'd like to review them. > > > > bug#73117: Imenu missing entries when flattening by group > > bug#80130: Add completing-read to tab-bar-closed-tabs > > bug#80192: Add undelete-frame-by-id > > Thanks. Three cases is not enough in my book, but if Sean is okay > with adding this, I won't object. > > Can we find a better name, though? Like, maybe start with "alist-" > not with "uniquify-"? I'll come up with a new name today or tomorrow as time allows. > --000000000000e70097064af14f5e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"auto"><span style=3D"font-family:-apple-system,sans-serif">On M= on, Feb 16, 2026 at 08:27 Eli Zaretskii <<a href=3D"mailto:eliz@HIDDEN"= >eliz@HIDDEN</a>> wrote:</span><br></div><div dir=3D"auto"><div class= =3D"gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" st= yle=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex" dir= =3D"auto">> From: Juri Linkov <<a href=3D"mailto:juri@HIDDEN" tar= get=3D"_blank">juri@HIDDEN</a>><br> > Cc: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN" tar= get=3D"_blank">shipmints@HIDDEN</a>>,<br> >=C2=A0 =C2=A0<a href=3D"mailto:spwhitton@HIDDEN" target=3D"_bla= nk">spwhitton@HIDDEN</a>,<br> >=C2=A0 =C2=A0<a href=3D"mailto:monnier@HIDDEN" target=3D"_bla= nk">monnier@HIDDEN</a>,=C2=A0 <a href=3D"mailto:80283@HIDDEN= .org" target=3D"_blank">80283 <at> debbugs.gnu.org</a><br> > Date: Mon, 16 Feb 2026 09:56:16 +0200<br> > <br> > >>=C2=A0 > +*** New function 'uniquify-alist-keys'.<b= r> > >>=C2=A0 > +This function is similar to 'generate-new-buf= fer-name'.<br> > >>=C2=A0 > +'uniquify-alist-keys' returns a copy of a= n alist with "<NUMBER>"<br> > >>=C2=A0 > +appended to its duplicate keys.=C2=A0 Text proper= ties are retained, and<br> > >>=C2=A0 > +non-string keys are first converted to strings.= =C2=A0 You can provide an<br> > >>=C2=A0 > +optional suffix format string to override the def= ault "<%d>", for<br> > >>=C2=A0 > +example with "(%d)", or a function whic= h is passed the key to uniquify<br> > >>=C2=A0 > +and the incrementing count.=C2=A0 Use this, for e= xample, to differentiate<br> > >>=C2=A0 > +among duplicate candidates 'completing-read&#= 39;.<br> > >> <br> > >>=C2=A0 Thanks, but am I the only one who asks himself why such= a peculiar<br> > >>=C2=A0 function is needed as part of Emacs core?=C2=A0 How man= y times some Lisp<br> > >>=C2=A0 program needed such functionality?=C2=A0 If it's ra= re enough, I don't think<br> > >>=C2=A0 we should have it in core.<br> > >> <br> > >>=C2=A0 Sean, WDYT?<br> > >> <br> > >> Juri and I have identified several places already in frame.el= ,<br> > >> tab-bar.el, imenu.el where we'd use this now.<br> > ><br> > > Please point to them, or tell in which message you mentioned them= .<br> > > I'd like to review them.<br> > <br> > bug#73117: Imenu missing entries when flattening by group<br> > bug#80130: Add completing-read to tab-bar-closed-tabs<br> > bug#80192: Add undelete-frame-by-id<br> <br> Thanks.=C2=A0 Three cases is not enough in my book, but if Sean is okay<br> with adding this, I won't object.<br> <br> Can we find a better name, though?=C2=A0 Like, maybe start with "alist= -"<br> not with "uniquify-"?</blockquote><div dir=3D"auto"><br></div><di= v dir=3D"auto">I'll come up with a new name today or tomorrow as time a= llows.=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .= 8ex;border-left:1px #ccc solid;padding-left:1ex" dir=3D"auto"></blockquote>= </div></div> --000000000000e70097064af14f5e--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 16 Feb 2026 13:27:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 16 08:27:58 2026 Received: from localhost ([127.0.0.1]:59914 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrydp-0002eM-UF for submit <at> debbugs.gnu.org; Mon, 16 Feb 2026 08:27:58 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:33224) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vrydn-0002e7-BN for 80283 <at> debbugs.gnu.org; Mon, 16 Feb 2026 08:27:56 -0500 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 1vrydg-0007sY-9M; Mon, 16 Feb 2026 08:27:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=VkLm9omZplTltxu4JU1gGt91XWrbSrFfdUaMJ/ifDS8=; b=SozByxN9Ji/0kMfPLMYW MYmbKmXwbMx/e5VeKKk1pTVooiKGiaTZIMiITxIS0XV0Tc85IftaZi9w/UGi0W2XC/5d7DneoIGRY QUNH7P5KXI0besk12cys3uYGsR9Ub/drLRTavTpTXKq6kB8tPY7unpYzTxyduYG6yunbyuzAFIkKB 7MCEuKaUDSuZevcPehN1gW0T5RfK8IWTFKPtcw8a6pWxLhaA3Y2lskflrjQi3S+0wrPI9NJWAO4i6 CSTzyCbs/qyxh38Ad35xz/5kCz5ENWrJQPVrKbOzr+0VckwZQ5AIWNyQ81LOWuS8PG3oEcpbf19GY vmZl9FcrxgKadA==; Date: Mon, 16 Feb 2026 15:27:39 +0200 Message-Id: <865x7wn7hw.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: Juri Linkov <juri@HIDDEN> In-Reply-To: <87zf59qiaf.fsf@HIDDEN> (message from Juri Linkov on Mon, 16 Feb 2026 09:56:16 +0200) Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> <87zf59qiaf.fsf@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 80283 Cc: 80283 <at> debbugs.gnu.org, shipmints@HIDDEN, monnier@HIDDEN, 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: -3.3 (---) > From: Juri Linkov <juri@HIDDEN> > Cc: Stéphane Marks <shipmints@HIDDEN>, > spwhitton@HIDDEN, > monnier@HIDDEN, 80283 <at> debbugs.gnu.org > Date: Mon, 16 Feb 2026 09:56:16 +0200 > > >> > +*** New function 'uniquify-alist-keys'. > >> > +This function is similar to 'generate-new-buffer-name'. > >> > +'uniquify-alist-keys' returns a copy of an alist with "<NUMBER>" > >> > +appended to its duplicate keys. Text properties are retained, and > >> > +non-string keys are first converted to strings. You can provide an > >> > +optional suffix format string to override the default "<%d>", for > >> > +example with "(%d)", or a function which is passed the key to uniquify > >> > +and the incrementing count. Use this, for example, to differentiate > >> > +among duplicate candidates 'completing-read'. > >> > >> Thanks, but am I the only one who asks himself why such a peculiar > >> function is needed as part of Emacs core? How many times some Lisp > >> program needed such functionality? If it's rare enough, I don't think > >> we should have it in core. > >> > >> Sean, WDYT? > >> > >> Juri and I have identified several places already in frame.el, > >> tab-bar.el, imenu.el where we'd use this now. > > > > Please point to them, or tell in which message you mentioned them. > > I'd like to review them. > > bug#73117: Imenu missing entries when flattening by group > bug#80130: Add completing-read to tab-bar-closed-tabs > bug#80192: Add undelete-frame-by-id Thanks. Three cases is not enough in my book, but if Sean is okay with adding this, I won't object. Can we find a better name, though? Like, maybe start with "alist-" not with "uniquify-"?
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 16 Feb 2026 07:57:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 16 02:57:03 2026 Received: from localhost ([127.0.0.1]:58095 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrtTZ-0007Yz-Pj for submit <at> debbugs.gnu.org; Mon, 16 Feb 2026 02:57:03 -0500 Received: from mout-p-101.mailbox.org ([2001:67c:2050:0:465::101]:55692) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vrtTW-0007YM-Rb for 80283 <at> debbugs.gnu.org; Mon, 16 Feb 2026 02:56:59 -0500 Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4fDw8b69fCz9v6n; Mon, 16 Feb 2026 08:56:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1771228607; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=6AZsGHvDGek/ry3P80OJXpKprV4vAS/K7mISB+yceBQ=; b=P3c94KEKk9XpT/w1HNZmyWuf19whHF+T41LznBL7Azy8KEYpwKNT7z2gxzb+ScMhOq3eyY sIkTz7Ua9r4vgxQjx3cjl11X+9TAQDM0q+O95QkrR2lTxx9copTW+i2XmgnONNLrHrSS0k raFN0BkcfHYqj4I/ebRNLeSJ6zyMl0JC/8k8A3sOkER2dnx4TWYyzKcTfC0HkrLShQA8jp BNd16xe48eLJC0KdYeo4POpEKhI6QxnGZJJtMOTQsd6ib98QHWlMSjiE0pV/dbGEqLr8Wk PvnJSk49BQ7tggsZioaxfv5JMeFmZ6ALofqV5dd4W49o2aYElfSBzUEPPwtjig== From: Juri Linkov <juri@HIDDEN> To: Eli Zaretskii <eliz@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys In-Reply-To: <86ms19mkrq.fsf@HIDDEN> Organization: LINKOV.NET References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> <86ms19mkrq.fsf@HIDDEN> Date: Mon, 16 Feb 2026 09:56:16 +0200 Message-ID: <87zf59qiaf.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80283 Cc: 80283 <at> debbugs.gnu.org, =?iso-8859-1?Q?St=E9phane?= Marks <shipmints@HIDDEN>, monnier@HIDDEN, 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 (-) >> > +*** New function 'uniquify-alist-keys'. >> > +This function is similar to 'generate-new-buffer-name'. >> > +'uniquify-alist-keys' returns a copy of an alist with "<NUMBER>" >> > +appended to its duplicate keys. Text properties are retained, and >> > +non-string keys are first converted to strings. You can provide an >> > +optional suffix format string to override the default "<%d>", for >> > +example with "(%d)", or a function which is passed the key to uniquify >> > +and the incrementing count. Use this, for example, to differentiate >> > +among duplicate candidates 'completing-read'. >> >> Thanks, but am I the only one who asks himself why such a peculiar >> function is needed as part of Emacs core? How many times some Lisp >> program needed such functionality? If it's rare enough, I don't think >> we should have it in core. >> >> Sean, WDYT? >> >> Juri and I have identified several places already in frame.el, >> tab-bar.el, imenu.el where we'd use this now. > > Please point to them, or tell in which message you mentioned them. > I'd like to review them. bug#73117: Imenu missing entries when flattening by group bug#80130: Add completing-read to tab-bar-closed-tabs bug#80192: Add undelete-frame-by-id
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 16 Feb 2026 03:26:33 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 15 22:26:33 2026 Received: from localhost ([127.0.0.1]:54341 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrpFo-0005j1-I7 for submit <at> debbugs.gnu.org; Sun, 15 Feb 2026 22:26:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:44320) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vrpFl-0005il-0x for 80283 <at> debbugs.gnu.org; Sun, 15 Feb 2026 22:26:30 -0500 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 1vrpFc-0007oD-LH; Sun, 15 Feb 2026 22:26:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=JtdmdKGKier9BvWcYEgoBLZ0cUHsJFoEZoJ1BZ+OBX8=; b=fRfGYSFzr5VDeYQ0Qk0Y IJHvydWQF5+bdw2Okw1xbBwN5XaDqLAQDNddFqqd9jiQY1XnIlI5oc4ZBo0W+iK2jOPHJyrTjBFZA xHodSXlZjcHqNyxLVFM9QzUiB30F+o1e7BA4yO5t2MnGiQQAir8d41jqQm4vW6/SikYWdRe4t2z16 gKA7W55p/g2ny9BpkiaomM3EUL7H5yglOqJXTLteUmO91AvEDvNdb0viU7zQq5agAQvxxaYBCKS4l 94kvb/GwnINhSn0324f0qiYkCM01AVQNsNtQo0+/XVqj0d52SCjalOGBlcYcVyi7N0LcY3ud8jV0s wQBJFwX1yZunRw==; Date: Mon, 16 Feb 2026 05:26:17 +0200 Message-Id: <86ms19mkrq.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN> In-Reply-To: <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Sun, 15 Feb 2026 15:00:10 -0500) Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 80283 Cc: juri@HIDDEN, monnier@HIDDEN, 80283 <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: -3.3 (---) > From: Stéphane Marks <shipmints@HIDDEN> > Date: Sun, 15 Feb 2026 15:00:10 -0500 > Cc: Sean Whitton <spwhitton@HIDDEN>, juri@HIDDEN, monnier@HIDDEN, > 80283 <at> debbugs.gnu.org > > > On Sun, Feb 15, 2026 at 2:29 PM Eli Zaretskii <eliz@HIDDEN> wrote: > > > Cc: Stefan Monnier <monnier@HIDDEN>, 80283 <at> debbugs.gnu.org > > From: Stéphane Marks <shipmints@HIDDEN> > > Date: Sun, 15 Feb 2026 14:00:10 -0500 > > > > +*** New function 'uniquify-alist-keys'. > > +This function is similar to 'generate-new-buffer-name'. > > +'uniquify-alist-keys' returns a copy of an alist with "<NUMBER>" > > +appended to its duplicate keys. Text properties are retained, and > > +non-string keys are first converted to strings. You can provide an > > +optional suffix format string to override the default "<%d>", for > > +example with "(%d)", or a function which is passed the key to uniquify > > +and the incrementing count. Use this, for example, to differentiate > > +among duplicate candidates 'completing-read'. > > Thanks, but am I the only one who asks himself why such a peculiar > function is needed as part of Emacs core? How many times some Lisp > program needed such functionality? If it's rare enough, I don't think > we should have it in core. > > Sean, WDYT? > > Juri and I have identified several places already in frame.el, tab-bar.el, imenu.el where we'd use this now. Please point to them, or tell in which message you mentioned them. I'd like to review them. Thanks.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 15 Feb 2026 20:00:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 15 15:00:25 2026 Received: from localhost ([127.0.0.1]:48775 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vriI5-0001aZ-75 for submit <at> debbugs.gnu.org; Sun, 15 Feb 2026 15:00:25 -0500 Received: from mail-vk1-xa33.google.com ([2607:f8b0:4864:20::a33]:44188) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vriI2-0001aP-Ki for 80283 <at> debbugs.gnu.org; Sun, 15 Feb 2026 15:00:23 -0500 Received: by mail-vk1-xa33.google.com with SMTP id 71dfb90a1353d-5664393d409so1012637e0c.0 for <80283 <at> debbugs.gnu.org>; Sun, 15 Feb 2026 12:00:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771185622; cv=none; d=google.com; s=arc-20240605; b=AMfYtSuyYRRrF3KT6D/eVxs/z+gt393HPK4lBgNv6fTISePs70aoi3PBii7/n0fw++ duSVVLBbK0KiBYMMI0ouB9HmbLxIiyaU8IB/r8wciciB9wX7f6Ss99+TjV2f2W1PyYgV s9K0tcUAhou91wvY+qs+FmdZ5qbRH5zQk9LJf8Gk0ujuuKbvzuhEnSSKAu4ZUr1BwWCq WN4LRGFptRCW3wuDT6pGPNhRltj+N+VRP0iTPsCitBLZfUVQcwB7BusuRAJocHIxVWd3 JMJeIlN3tZlCjqVzUJCW9LkKEBqP1zT3rxwTYA6YEWVlglKVOCu0JA0Jyp+jLyKZ+EdD bPQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=lxCL5uL16koJms3nUVy5OGfwzYqfUQLoIXB3OQp/P6k=; fh=3njw/lSedmtq/a83tUfWnKlMF1KIn3dBPXC5jOYQ2V4=; b=Fj1elwIl9QrkYqytSgq3l9uBhaEIXvb+dk1C3FmwYBYzAqsyKyseSzRI0+kdiT/obF Xum8PICpPT0mv1An2LkhGmnI9PUhIFL09xpYKGhzIv0lrG1Sb02aioB6DbUVdNxPBWck jp7BGXWBVe7TOWuca5h3toDTmpzPmsUCv9rXEmKVp2wW/bz9vU49V2wprEwXx5JiQ8JT 6/bHfszBAzCsgkTzXPB9z69gGJnaFuw5rnAlXgCWQ4QQBLaa599oy4i9apb9zbQL0AMy n8URfNz7OsOI4mtKFZXPdSoJ+EwukSFipnQjNWcpEtFrPogYcC44aYXIBJ0JfhC7foYr yndA==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771185622; x=1771790422; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=lxCL5uL16koJms3nUVy5OGfwzYqfUQLoIXB3OQp/P6k=; b=XYuEAR0EakSBHMTXL8XasmLFlxN4UyylOUj049pUIf+BC7yAy8qDYdkOtufn49opNt 025jO37/J6e+qO8c2TZNjS3NSAnJQ+StwB9q7Tvdzxuqa6fYGKO5Ey8VNuYQhkah2AXR e2M1OKI5/hfeZ1My3au1Qd8KNaVKnEegMWiJIh82hlmOmzPNmVxoRwSloYA8tqHzO+34 IL2u66POlel4qFHSyCNgt2lIXGomUE35+MLrQLeply27i3uNcGGpTbGpFgf4xIs3mz8w cDqo12PpoqaB/9tbM8rkFnYm7CD0kdO+DQyiOkXaD1upHPWFEl1AN2EBRtxMxs1+5TTJ 5ZsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771185622; x=1771790422; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=lxCL5uL16koJms3nUVy5OGfwzYqfUQLoIXB3OQp/P6k=; b=WQ5TKYHsLbJXKvmwNd1XeFa/3oHnIx2Cl+GP0nGuUvDsax1P6ZP2ed/opc6u5Mfpdc q6fMBBj4c5Ww0P3jAcz1zhJ7S0D3F+Bxh9v8RG/Qqwhd1EeiYPekPOvlhTCSA0dzmOsC beu4dn+uUu0g/4nNYeLAxua9smBRwClSjZ371U5kzb1QULqc9bbnELWVhq1PDFupI/ph oMWJiG+aXSepViDjtgojuQNeirn9Pr9IdG5BuRX4CzYgvKXsLOn32nWsRIL0Rfj4DtIa I5qLoonapE9JPNSLw5TYDdZFIPdbEZHZx4I086FapDHzl42ZtE8yFeLHVpAYD7r1ZESv fyRw== X-Forwarded-Encrypted: i=1; AJvYcCXs/SJAPb/KXFK2UcjfeVNpUTk4uDy/MbJzpcUzxFtSGGoQ8wUon473F46JihuEPglxL9Jjfg==@debbugs.gnu.org X-Gm-Message-State: AOJu0YyJHeMaJbRz2/BUj/jjqgnGgBpSjlhSdSAJyMdFkQUqd4v0Sill kRXEYeVxSHBJWh+CjwF+8UXNl72M/AT94IRt7j2RpPZTk1wWMDXGPeW94NhlnuoflsN/flG6R4O yzOlqW4vTAgRM29m9rsxp2z5t8DXR0TcKKw== X-Gm-Gg: AZuq6aJOzH1Fpww9rMl1wIO1iEZV8WffjtW5i65eJZYIN/Pl83IhtxarkPo61wjuUSG WnNsZMV6TMjVR+4Q+3GM9FZgPqN7zp69uPIIP0X9+qwy+vxG4z20+MxoKY4LQXwHKD8NFnegLec hf87webUSgfd7Jd7UZkCXlhL3RS77fe0RAijC9o/7neWB5z3MPI2xbm7dsbCNXzAzeiiaFxDJSl cmz1C/zfi+py/fOEuvcsUoWV7qXSNgRAjL8+cPyrVLbUyHXjv6zh04N13KU3Bk4X5PDyseXSjaI mWhrvcI3nFpOy/fcy0ZLoFSwwX8nBA7vkaIilC5MASgDbhHCOPJUmt6E32Zm9hcwgR4jCGlvZaI = X-Received: by 2002:a05:6102:38d1:b0:5f1:51b1:480 with SMTP id ada2fe7eead31-5fe1acaf4bemr2486865137.8.1771185621764; Sun, 15 Feb 2026 12:00:21 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> <86pl65n6u9.fsf@HIDDEN> In-Reply-To: <86pl65n6u9.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 15 Feb 2026 15:00:10 -0500 X-Gm-Features: AaiRm52hh3j0E8YYaUgQYfPrUj7-Nflgc-ruaZcdt9jE2n0Onv2345dFMklP6vA Message-ID: <CAN+1HbrtugzXvXW03BcMHbJjrO2wc++49CDo_nVm6zA0gs1ipQ@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Eli Zaretskii <eliz@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000d11001064ae2498a" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: juri@HIDDEN, monnier@HIDDEN, 80283 <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: 0.0 (/) --000000000000d11001064ae2498a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 15, 2026 at 2:29=E2=80=AFPM Eli Zaretskii <eliz@HIDDEN> wrote: > > Cc: Stefan Monnier <monnier@HIDDEN>, 80283 <at> debbugs.gnu.org > > From: St=C3=A9phane Marks <shipmints@HIDDEN> > > Date: Sun, 15 Feb 2026 14:00:10 -0500 > > > > +*** New function 'uniquify-alist-keys'. > > +This function is similar to 'generate-new-buffer-name'. > > +'uniquify-alist-keys' returns a copy of an alist with "<NUMBER>" > > +appended to its duplicate keys. Text properties are retained, and > > +non-string keys are first converted to strings. You can provide an > > +optional suffix format string to override the default "<%d>", for > > +example with "(%d)", or a function which is passed the key to uniquify > > +and the incrementing count. Use this, for example, to differentiate > > +among duplicate candidates 'completing-read'. > > Thanks, but am I the only one who asks himself why such a peculiar > function is needed as part of Emacs core? How many times some Lisp > program needed such functionality? If it's rare enough, I don't think > we should have it in core. > > Sean, WDYT? > Juri and I have identified several places already in frame.el, tab-bar.el, imenu.el where we'd use this now. --000000000000d11001064ae2498a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 15, 2026 at 2:29=E2=80=AFPM Eli Zaretskii <<a href=3D"mailto= :eliz@HIDDEN">eliz@HIDDEN</a>> wrote:</span></div></div><div class=3D"= gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" style= =3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding= -left:1ex">> Cc: Stefan Monnier <<a href=3D"mailto:monnier@HIDDEN= eal.ca" target=3D"_blank">monnier@HIDDEN</a>>, <a href=3D"mail= to:80283 <at> debbugs.gnu.org" target=3D"_blank">80283 <at> debbugs.gnu.org</a><br> > From: St=C3=A9phane Marks <<a href=3D"mailto:shipmints@HIDDEN" t= arget=3D"_blank">shipmints@HIDDEN</a>><br> > Date: Sun, 15 Feb 2026 14:00:10 -0500<br> > <br> > +*** New function 'uniquify-alist-keys'.<br> > +This function is similar to 'generate-new-buffer-name'.<br> > +'uniquify-alist-keys' returns a copy of an alist with "&= lt;NUMBER>"<br> > +appended to its duplicate keys.=C2=A0 Text properties are retained, a= nd<br> > +non-string keys are first converted to strings.=C2=A0 You can provide= an<br> > +optional suffix format string to override the default "<%d>= ;", for<br> > +example with "(%d)", or a function which is passed the key = to uniquify<br> > +and the incrementing count.=C2=A0 Use this, for example, to different= iate<br> > +among duplicate candidates 'completing-read'.<br> <br> Thanks, but am I the only one who asks himself why such a peculiar<br> function is needed as part of Emacs core?=C2=A0 How many times some Lisp<br= > program needed such functionality?=C2=A0 If it's rare enough, I don'= ;t think<br> we should have it in core.<br> <br> Sean, WDYT?<br></blockquote><div><br></div><div class=3D"gmail_default" sty= le=3D"font-family:monospace">Juri and I have identified several places alre= ady in frame.el, tab-bar.el, imenu.el=C2=A0where we'd use this now.</di= v></div></div> --000000000000d11001064ae2498a--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 15 Feb 2026 19:29:43 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 15 14:29:43 2026 Received: from localhost ([127.0.0.1]:48387 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrhoN-0007SJ-6a for submit <at> debbugs.gnu.org; Sun, 15 Feb 2026 14:29:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52176) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vrhoL-0007S8-G3 for 80283 <at> debbugs.gnu.org; Sun, 15 Feb 2026 14:29:42 -0500 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 1vrhoF-0005hn-Rp; Sun, 15 Feb 2026 14:29:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=05lrYg1qHeZGNsuMM9yogqa+lGuHI1rp8XQIbv+sG4E=; b=fSDka9a7HrzTOd/i9hjO Y02Cnn6W5e95yTLSxWwq+tVJ2Mlk+z8ZaYgdykcaoali1MUawt+R27j5Pk8+gMyKWAqXyrAqqoodg Hn6IzqVW+pwodFbMhi4Tu7IOcz7u2/HZlj6RmOUZZhqriA+3Sf0QknkcORQuvXrAk4bZ92AN8J/Qy 2SzoBjYgnv2JoQEt5oMC7u25+brwpnd7WY5639GHAD7T0HkBnGlMSfobRZKgxWhdq8YmwDGWi+0Ss UQZdqDG9LtEZzKq+4muCCEQekzbDS0Ozn9ashuwZBd3luECqs5rIT1T1o9kigsYsdieWM7Y4VNhYC yNHC0OJbavQUKw==; Date: Sun, 15 Feb 2026 21:29:34 +0200 Message-Id: <86pl65n6u9.fsf@HIDDEN> From: Eli Zaretskii <eliz@HIDDEN> To: =?utf-8?Q?St=C3=A9phane?= Marks <shipmints@HIDDEN>, Sean Whitton <spwhitton@HIDDEN> In-Reply-To: <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> (message from =?utf-8?Q?St=C3=A9phane?= Marks on Sun, 15 Feb 2026 14:00:10 -0500) Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 80283 Cc: monnier@HIDDEN, 80283 <at> debbugs.gnu.org, juri@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: -3.3 (---) > Cc: Stefan Monnier <monnier@HIDDEN>, 80283 <at> debbugs.gnu.org > From: Stéphane Marks <shipmints@HIDDEN> > Date: Sun, 15 Feb 2026 14:00:10 -0500 > > +*** New function 'uniquify-alist-keys'. > +This function is similar to 'generate-new-buffer-name'. > +'uniquify-alist-keys' returns a copy of an alist with "<NUMBER>" > +appended to its duplicate keys. Text properties are retained, and > +non-string keys are first converted to strings. You can provide an > +optional suffix format string to override the default "<%d>", for > +example with "(%d)", or a function which is passed the key to uniquify > +and the incrementing count. Use this, for example, to differentiate > +among duplicate candidates 'completing-read'. Thanks, but am I the only one who asks himself why such a peculiar function is needed as part of Emacs core? How many times some Lisp program needed such functionality? If it's rare enough, I don't think we should have it in core. Sean, WDYT?
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 15 Feb 2026 19:00:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 15 14:00:35 2026 Received: from localhost ([127.0.0.1]:48181 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrhMA-0005t7-Sj for submit <at> debbugs.gnu.org; Sun, 15 Feb 2026 14:00:35 -0500 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]:44240) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vrhLz-0005si-9h for 80283 <at> debbugs.gnu.org; Sun, 15 Feb 2026 14:00:24 -0500 Received: by mail-vs1-xe29.google.com with SMTP id ada2fe7eead31-5faa8a9d7b7so539518137.0 for <80283 <at> debbugs.gnu.org>; Sun, 15 Feb 2026 11:00:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771182022; cv=none; d=google.com; s=arc-20240605; b=amm29BXYboUJSWMvKlOeHmA074h3YSm3ifFqQ4yI7wUJczRO7WwM24Nmry68OILEVh OGC+TOcCHNj5oN3YO7MdtbWP0MpEC+Ziy6G3s3FXZrFvirV3NMNCCLNZRBySYhgbvw5E wNokvvMTkA3HUeUyMz/9UvhsQEGvKsKt3n9F0zVkhB3lkmPIf+RxCcG/KYdFO7wWEDWU UF9fX8ZtKC8SLItCFZ7zpspB+2Iw9Qmm4YHyWyvNv4ExP1FNZ2F7YFawpk0ejkBoVFbC Agx8WLRkzJLXPfeC6ap+ds/yFXUVUJKwCyji0At2TDrYB7E2D07acfH2DwCH8xqESe9S lMXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=MHuv+PhNXk+8ZSNBac2QKmfH4eirVpWEXRdcGxQhFUg=; fh=H8rQM2WAB7RMtzL/cST97L3GQYVrgzUkjWSzxgNeVbA=; b=Qqv59myPdTqFM7XrnbeOo29jEA/clSnFq/Tl1r0iYfY5sSrz1r15aKPnPVaIR6be5Q z6aa++JgGixLku9fUl/9mOUz9kWkSoQg+XizuYpHwuxg4FkD0/THV/jEhyZq7rqjdp4F VFNqrZkRLqQyyFiDjH5C/cUfqJa25OIPu5U3QbLBWfVJp1eZFKOprsdhxNoz/oUQJ50q mYESaLISofUVtaGZimm7/6E+7GJfKAd6kxRaKLnBijRJ72GKeZklQSSr8dln5fq4dbfZ WBqSG/9xyTs/LRF9HLl6oJ+BVDBe5zHke2p12Oor5B28MgLKmsXjonsnHHIV/s7L5/1v pPug==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771182022; x=1771786822; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=MHuv+PhNXk+8ZSNBac2QKmfH4eirVpWEXRdcGxQhFUg=; b=LWWI5nOSgPBt54IQ2CdtIW+mj+t5+hqnarcDYEvwr7GeolNuabQgzLKB1fuH/lig9B KoV866Yk98saxcnItuXdfQK8d/0nTPdDl7IF2oaFtOCBzGLLEmBVyRGxrSwV9O9T1RAO wGK2QAV8bX194mBVLD173AHGTvjQp3wTyjp+srHU55ywNpVQRYquQyD69W82j2uC3iVG zy+e+xzEJY6BoW3wcKKaBoecsTakcK5+drKUMs17DsCyBCdq6gIoNQFACG1vfQsw8oM6 VOWrE+tBneavs1Q+z39XM86q9nV0xxPAKnPYBvlUM1Gt2Tg7R7AEg9BOLGRpfEelzjpT Zf1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771182022; x=1771786822; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=MHuv+PhNXk+8ZSNBac2QKmfH4eirVpWEXRdcGxQhFUg=; b=IvCQyN255F0VVxOPdKI0aSS+0NMdoepd5uqTQROqn9GoKIL4ZruRUmzmR6hNlAIEeF 0GocVx9u1VldUrzYagK2QAKem4/wnM6YJxHc3KZfj9r8WXHlNj1Jd7AlcGRLfqB50rT8 PLTzR93V3QY6j08PjYtV+S+nm4uSzQjun68rN1Gk9c1POd/wiSecwCra+EAErzVQHlcI WDnlMGE7tSavnffC2LUaWmvtuhbgX75ibelEr2vA40ofSVKDHXlIQKqIBxL8Ju6DDUV/ bDXK2PO5+nB3JHST5JMtEj1XtahexzzHEJwz0n9VVWwN7m3cQKfjMu7G5PqdDr0BoiW2 rSdw== X-Gm-Message-State: AOJu0Yx8MazDcuIkaDvmW7e+y6+c7ea/mevRVaTN5x3va9pk3uVq7iJJ BTxddjBE0wGZzm1RgKw0PmsYblSl82iEIwndtjDsSWEE7K037rLJHDnV884Fk1y/S2qzd+LTYjD K8J6kzW0DsgjzESeG+2nTHIWhxC0FzA4= X-Gm-Gg: AZuq6aL03+58L6fOMztD5ET9CUxK3I9Wsc2JaFpdqskN1cCeiPoxUOpcm1ZwXUslBWn 2OihFrRe0QqZRB2xthy1AZeyPcKDHsf+ty9qQ7l9C/LCPzwHoMANwOGt30oVFbSuHE63128Y1w+ oDwqohihJLB6IaM0o4YcFyRLjcB8YYBSBBk6fagvjMBMLX+5EWkWVAsjV9z3M2kB6U1+NT5/3C6 nutjfye941h/xeChvIJ+mQFMGABcKUq4GbUHkp7sKaETvxV6Mb4ojeQ0NgQCZY9Re+Px/Bef+8m 6A2QyHKT9Ew5Cb53m+/WarOud9PHTlePcyw1XLu12PZWKJO03ZDABZJtCwRAK5Ric9MKxDWm8eY = X-Received: by 2002:a05:6102:26ce:b0:5f5:40e5:24c7 with SMTP id ada2fe7eead31-5fe1acaeb26mr2470167137.7.1771182022155; Sun, 15 Feb 2026 11:00:22 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> <87jywdc1y9.fsf@HIDDEN> In-Reply-To: <87jywdc1y9.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 15 Feb 2026 14:00:10 -0500 X-Gm-Features: AaiRm51ANibk6GNjy8QCzyrSrdcDNmARByY5NX0_8PriZVnmKjnJliAopfb2I-U Message-ID: <CAN+1HbrCrB2gq8D+4xooJJ_NoSpJFh-b8Zw=-iLZT489XjTWRQ@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Juri Linkov <juri@HIDDEN> Content-Type: multipart/mixed; boundary="00000000000043797a064ae1736d" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: Stefan Monnier <monnier@HIDDEN>, 80283 <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: 0.0 (/) --00000000000043797a064ae1736d Content-Type: multipart/alternative; boundary="000000000000437978064ae1736b" --000000000000437978064ae1736b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 15, 2026 at 1:13=E2=80=AFPM Juri Linkov <juri@HIDDEN> wrote= : > > I don't mind installing something simpler. I hope Stefan will add a us= e > > case for the semi-bulk and bulk handler cases. If we don't hear back > soon, > > I'll simplify the patch and we can add new optional arguments and > > functionality later. > > Let's first install a simple version that supports a lambda for > suffix-format. > This allows using line numbers to uniquify Imenu names. > > > Question: Should we change the default format to be "()" rather than co= py > > "<>" from `generate-new-buffer-name` and people can use "<>" if/when th= ey > > need it? > > "<%s>" looks more standard for the default value. However, "<%s>" > sorts duplicate names to the end of the completions. While "(%s)" > keeps duplicate names grouped together. > Patch attached. --000000000000437978064ae1736b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 15, 2026 at 1:13=E2=80=AFPM Juri Linkov <<a href=3D"mailto:j= uri@HIDDEN">juri@HIDDEN</a>> wrote:</span></div></div><div class= =3D"gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" st= yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd= ing-left:1ex">> I don't mind installing something simpler.=C2=A0 I h= ope Stefan will add a use<br> > case for the semi-bulk and bulk handler cases.=C2=A0 If we don't h= ear back soon,<br> > I'll simplify the patch and we can add new optional arguments and<= br> > functionality later.<br> <br> Let's first install a simple version that supports a lambda for suffix-= format. <br> This allows using line numbers to uniquify Imenu names.<br> <br> > Question: Should we change the default format to be "()" rat= her than copy<br> > "<>" from `generate-new-buffer-name` and people can us= e "<>" if/when they<br> > need it?<br> <br> "<%s>" looks more standard for the default value.=C2=A0 How= ever, "<%s>"<br> sorts duplicate names to the end of the completions.=C2=A0 While "(%s)= "<br> keeps duplicate names grouped together.<br></blockquote><div><br></div><div= class=3D"gmail_default" style=3D"font-family:monospace">Patch attached.</d= iv></div></div> --000000000000437978064ae1736b-- --00000000000043797a064ae1736d Content-Type: application/octet-stream; name="0001-New-function-uniquify-alist-keys-bug-80283.patch" Content-Disposition: attachment; filename="0001-New-function-uniquify-alist-keys-bug-80283.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mlo41cid0> X-Attachment-Id: f_mlo41cid0 RnJvbSAyMzk5NDg5NDg0MzYzZmNlYWNhOWViNjM3ODVlZGYzOTRlYjJlM2IwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgRmViIDIwMjYgMTM6NTQ6MTMgLTA1MDAK U3ViamVjdDogW1BBVENIXSBOZXcgZnVuY3Rpb24gJ3VuaXF1aWZ5LWFsaXN0LWtleXMnIChidWcj ODAyODMpCgpUaGlzIGZ1bmN0aW9uIGJlIHVzZWQgdG8gZGlmZmVyZW50aWF0ZSBhbW9uZyBkdXBs aWNhdGUKJ2NvbXBsZXRpbmctcmVhZCcgY2FuZGlkYXRlcy4KCiogbGlzcC9lbWFjcy1saXNwL3N1 YnIteC5lbCAodW5pcXVpZnktYWxpc3Qta2V5cyk6IE5ldyBkZWZ1bi4KKiB0ZXN0L2xpc3AvbWlz Yy10ZXN0cy5lbCAobWlzYy10ZXN0LXVuaXF1aWZ5LWFsaXN0LWtleXMpOiBOZXcKdGVzdC4KKiBl dGMvTkVXUzogQW5ub3VuY2UgdGhlIG5ldyBmdW5jdGlvbi4KLS0tCiBldGMvTkVXUyAgICAgICAg ICAgICAgICAgIHwgMTEgKysrKysrKysrKysKIGxpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwgfCAz NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0L2xpc3AvbWlzYy10ZXN0 cy5lbCAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQs IDcyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4 IDBkZDE1YWQxOGMzLi4xZGMyMjc3ZjUzNyAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRj L05FV1MKQEAgLTMxODcsNiArMzE4NywxNyBAQCBkZXRlcm1pbmVkIGJ5IHRoZSBuZXcgdXNlciBv cHRpb24gJ3B1bHNlLWZhY2UtZHVyYXRpb24nLgogCiAqKiBNaXNjZWxsYW5lb3VzCiAKKy0tLQor KioqIE5ldyBmdW5jdGlvbiAndW5pcXVpZnktYWxpc3Qta2V5cycuCitUaGlzIGZ1bmN0aW9uIGlz IHNpbWlsYXIgdG8gJ2dlbmVyYXRlLW5ldy1idWZmZXItbmFtZScuCisndW5pcXVpZnktYWxpc3Qt a2V5cycgcmV0dXJucyBhIGNvcHkgb2YgYW4gYWxpc3Qgd2l0aCAiPE5VTUJFUj4iCithcHBlbmRl ZCB0byBpdHMgZHVwbGljYXRlIGtleXMuICBUZXh0IHByb3BlcnRpZXMgYXJlIHJldGFpbmVkLCBh bmQKK25vbi1zdHJpbmcga2V5cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIHN0cmluZ3MuICBZb3Ug Y2FuIHByb3ZpZGUgYW4KK29wdGlvbmFsIHN1ZmZpeCBmb3JtYXQgc3RyaW5nIHRvIG92ZXJyaWRl IHRoZSBkZWZhdWx0ICI8JWQ+IiwgZm9yCitleGFtcGxlIHdpdGggIiglZCkiLCBvciBhIGZ1bmN0 aW9uIHdoaWNoIGlzIHBhc3NlZCB0aGUga2V5IHRvIHVuaXF1aWZ5CithbmQgdGhlIGluY3JlbWVu dGluZyBjb3VudC4gIFVzZSB0aGlzLCBmb3IgZXhhbXBsZSwgdG8gZGlmZmVyZW50aWF0ZQorYW1v bmcgZHVwbGljYXRlIGNhbmRpZGF0ZXMgJ2NvbXBsZXRpbmctcmVhZCcuCisKIC0tLQogKioqIFRo ZSBmaXJzdCBjbGllbnQgZnJhbWUgbm93IHNob3dzIHdhcm5pbmdzIGZyb20gZGFlbW9uIHN0YXJ0 dXAuCiBXaGVuIHRoZXJlIGFyZSB3YXJuaW5ncyBlbWl0dGVkIGR1cmluZyBFbWFjcyBzdGFydHVw LCB1c3VhbGx5IGR1ZSB0bwpkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbCBi L2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKaW5kZXggYjM2YjE0YjliNTAuLjkxMThkYTI1YjFl IDEwMDY0NAotLS0gYS9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVsCisrKyBiL2xpc3AvZW1hY3Mt bGlzcC9zdWJyLXguZWwKQEAgLTY1Myw2ICs2NTMsNDAgQEAgZW1hY3MtZXRjLS1oaWRlLWxvY2Fs LXZhcmlhYmxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24gKGZvcndhcmQtbGlu ZSAtMSkgKHBvaW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludC1tYXgpKSkpKQog Cis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIHVuaXF1aWZ5LWFsaXN0LWtleXMgKGFsaXN0ICZvcHRp b25hbCBzdWZmaXgtZm9ybWF0KQorICAiUmV0dXJuIGEgY29weSBvZiBBTElTVCB3aXRoIFwiPE5V TUJFUj5cIiBhcHBlbmRlZCB0byBkdXBsaWNhdGUga2V5cy4KK0FMSVNUIGtleXMgc2hvdWxkIGJl IHN0cmluZ3MgYW5kIG1heSBoYXZlIHRleHQgcHJvcGVydGllcyB3aGljaCByZW1haW4KK2ludGFj dC4gIE5vbi1zdHJpbmcga2V5cyBhcmUgY29udmVydGVkIHRvIHN0cmluZ3MuCisKK05VTUJFUiBp cyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBpbnRlZ2VyIHN0YXJ0aW5nIGF0IDIgZm9yIHRo ZSBmaXJzdAorZHVwbGljYXRlLgorCitJZiBTVUZGSVgtRk9STUFUIGlzIG5vbi1uaWwsIGl0IGlz IGEgdmFsaWQgZm9ybWF0LWNvbnRyb2wgc3RyaW5nIHBhc3NlZAordG8gdGhlIGZ1bmN0aW9uIGBm b3JtYXQnLCBhbmQgY29udGFpbmluZyBhIHNpbmdsZSBlbWJlZGRlZCBcIiVkXCIsIGZvcgorZXhh bXBsZSBcIiglZClcIi4gIEl0IGRlZmF1bHRzIHRvIFwiPCVkPlwiLiAgSWYgU1VGRklYLUZPUk1B VCBpcyBhCitmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSBhbGlzdCBl bGVtZW50IHRvIHVuaXF1aWZ5LCB0aGUKK2luY3JlbWVudGluZyBjb3VudC4gIEl0IHNob3VsZCBy ZXR1cm4gYSBzdHJpbmcuCisKK1RoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBgZ2VuZXJhdGUt bmV3LWJ1ZmZlci1uYW1lJyBidXQgZm9yIGFsaXN0cy4iCisgIChsZXQgKCh1bmlxdWVzKQorICAg ICAgICAoaHQgKG1ha2UtaGFzaC10YWJsZSA6c2l6ZSAobGVuZ3RoIGFsaXN0KSA6dGVzdCAjJ2Vx dWFsKSkpCisgICAgKGRvbGlzdCAoZWx0IGFsaXN0KQorICAgICAgKGxldCogKChrZXkgKGNhciBl bHQpKQorICAgICAgICAgICAgIChrZXkgKGlmIChzdHJpbmdwIGtleSkga2V5IChmb3JtYXQgIiVT IiBrZXkpKSkKKyAgICAgICAgICAgICAodW5pcXVlLWtleSBrZXkpIDsgTGVhdmUgcHJvcGVydGll cyBpbnRhY3QuCisgICAgICAgICAgICAgKGtleSAoc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMga2V5 KSkKKyAgICAgICAgICAgICAoY291bnQgKGdldGhhc2gga2V5IGh0KSkpCisgICAgICAgICh3aGVu IGNvdW50CisgICAgICAgICAgKHNldHEgY291bnQgKDErIGNvdW50KSkKKyAgICAgICAgICAoc2V0 cSB1bmlxdWUta2V5IChpZiAoZnVuY3Rpb25wIHN1ZmZpeC1mb3JtYXQpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc3VmZml4LWZvcm1hdCBlbHQgY291bnQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgKGNvbmNhdCAiJXMiIChvciBzdWZmaXgt Zm9ybWF0ICI8JWQ+IikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5p cXVlLWtleSBjb3VudCkpKSkKKyAgICAgICAgKHB1c2ggKGNvbnMgdW5pcXVlLWtleSAoY2RyIGVs dCkpIHVuaXF1ZXMpCisgICAgICAgIChwdXRoYXNoIGtleSAob3IgY291bnQgMSkgaHQpKSkKKyAg ICAobnJldmVyc2UgdW5pcXVlcykpKQorCiAocHJvdmlkZSAnc3Vici14KQogCiA7Ozsgc3Vici14 LmVsIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL21pc2MtdGVzdHMuZWwgYi90ZXN0 L2xpc3AvbWlzYy10ZXN0cy5lbAppbmRleCA4MWViZTFhNTg2OS4uMjI2ZTY3OWUzZjAgMTAwNjQ0 Ci0tLSBhL3Rlc3QvbGlzcC9taXNjLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9taXNjLXRlc3Rz LmVsCkBAIC0zMzMsNSArMzMzLDMyIEBAIG1pc2MtdGVzdC10cnVuY2F0ZS1zdHJpbmctcGl4ZWx3 aXNlLXVuaWNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggKHRydW5jYXRlLXN0 cmluZy1waXhlbHdpc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBt YXgtcGl4ZWxzIChjdXJyZW50LWJ1ZmZlcikpKSkpKSkpKSkpCiAKKyhlcnQtZGVmdGVzdCBtaXNj LXRlc3QtdW5pcXVpZnktYWxpc3Qta2V5cyAoKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnkt YWxpc3Qta2V5cworICAgICAgICAgICAgICAgICAgJygpKQorICAgICAgICAgICAgICAgICAnKCkp KQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktYWxpc3Qta2V5cworICAgICAgICAgICAgICAg ICAgJygoImEiICJBIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJlIiAiRSIpKSkK KyAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJE IikgKCJlIiAiRSIpKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisg ICAgICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImEiICJBMiIpICgiYiIgIkIiKSAoImMiICJD IikgKCJkIiAiRCIpICgiZCIgIkQyIikgKCJkIiAiRDMiKSAoImUiICJFIikpKQorICAgICAgICAg ICAgICAgICAnKCgiYSIgIkEiKSAoImE8Mj4iICJBMiIpICgiYiIgIkIiKSAoImMiICJDIikgKCJk IiAiRCIpICgiZDwyPiIgIkQyIikgKCJkPDM+IiAiRDMiKSAoImUiICJFIikpKSkKKyAgKHNob3Vs ZCAoZXF1YWwgKHVuaXF1aWZ5LWFsaXN0LWtleXMKKyAgICAgICAgICAgICAgICAgICcoKCJhIiAi QSIpICgiYSIgIkEyIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkIiAiRDIiKSAo ImQiICJEMyIpICgiZSIgIkUiKSkKKyAgICAgICAgICAgICAgICAgICIoJWQpIikKKyAgICAgICAg ICAgICAgICAgJygoImEiICJBIikgKCJhKDIpIiAiQTIiKSAoImIiICJCIikgKCJjIiAiQyIpICgi ZCIgIkQiKSAoImQoMikiICJEMiIpICgiZCgzKSIgIkQzIikgKCJlIiAiRSIpKSkpCisgIChzaG91 bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAgICAnKCgiYSIg IkEiKSAoImEiICJBMiIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCIgIkQyIikg KCJkIiAiRDMiKSAoImUiICJFIikpCisgICAgICAgICAgICAgICAgICAobGFtYmRhIChlbHQgY291 bnQpIChmb3JtYXQgIiVzWyVkXSIgKGNhciBlbHQpIGNvdW50KSkpCisgICAgICAgICAgICAgICAg ICcoKCJhIiAiQSIpICgiYVsyXSIgIkEyIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikg KCJkWzJdIiAiRDIiKSAoImRbM10iICJEMyIpICgiZSIgIkUiKSkpKQorICAoc2hvdWxkIChlcXVh bCAodW5pcXVpZnktYWxpc3Qta2V5cworICAgICAgICAgICAgICAgICAgYCgoLChwcm9wZXJ0aXpl ICJhIiAnaWQgMSkgIkEiKSAoLChwcm9wZXJ0aXplICJhIiAnaWQgMikgIkEyIikKKyAgICAgICAg ICAgICAgICAgICAgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkIiAiRDIiKSAoImQi ICJEMyIpICgiZSIgIkUiKSkpCisgICAgICAgICAgICAgICAgIGAoKCwocHJvcGVydGl6ZSAiYSIg J2lkIDEpICJBIikgKCwocHJvcGVydGl6ZSAiYTwyPiIgJ2lkIDIpICJBMiIpCisgICAgICAgICAg ICAgICAgICAgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkPDI+IiAiRDIiKSAoImQ8 Mz4iICJEMyIpICgiZSIgIkUiKSkpKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktYWxpc3Qt a2V5cworICAgICAgICAgICAgICAgICAgJygoMSAiQSIpICgxICJBMiIpICgyICJCIikgKCJjIiAi QyIpICgiZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKSkKKyAgICAgICAg ICAgICAgICAgJygoIjEiICJBIikgKCIxPDI+IiAiQTIiKSAoIjIiICJCIikgKCJjIiAiQyIpICgi ZCIgIkQiKSAoImQ8Mj4iICJEMiIpICgiZDwzPiIgIkQzIikgKCJlIiAiRSIpKSkpKQorCiAocHJv dmlkZSAnbWlzYy10ZXN0cykKIDs7OyBtaXNjLXRlc3RzLmVsIGVuZHMgaGVyZQotLSAKMi41MS4w Cgo= --00000000000043797a064ae1736d--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 15 Feb 2026 18:13:26 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 15 13:13:26 2026 Received: from localhost ([127.0.0.1]:47945 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrgcX-0003Um-MW for submit <at> debbugs.gnu.org; Sun, 15 Feb 2026 13:13:25 -0500 Received: from mout-p-202.mailbox.org ([2001:67c:2050:0:465::202]:39368) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vrgcM-0003UC-R1 for 80283 <at> debbugs.gnu.org; Sun, 15 Feb 2026 13:13:15 -0500 Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-202.mailbox.org (Postfix) with ESMTPS id 4fDYtB2V65z9sqN; Sun, 15 Feb 2026 19:13:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1771179186; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=veErfolDTsdueow1PMQz2+lH4Dub0qpHGn0wsVcuy4E=; b=eIRCLtfYwAB0OunoDEIN4ZLgkxxLf2ReYaUtt+WF9LF4DLGzM+6/j+QcUIyHcsMjs6QvSv IwLi/QqyW+cHA900H44eojM0ehjgneyGKgpsKDiTVopgv06KyboHqEwsohK6vyZBECx4fy wPHCJNh0BG0JGSOI1H7SpEwFW7wpKSp4FGVhvw3zEQgqdkyNRRh2yLSmMZEzRPhamdm1EN QcV9OoRizqCVMh+y/d6kGC8dFD16M7YGMC7pMYTUVElHe2Zi/bdlTTL1OWEcNPA/qlAm3D T2fAU6JJ45gftX3ASZs+7SNvTPyxCIW7HNRt9yQSGqjOoYIom3hzg61ME8GcfQ== From: Juri Linkov <juri@HIDDEN> To: =?iso-8859-1?Q?St=E9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys In-Reply-To: <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> Organization: LINKOV.NET References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> Date: Sun, 15 Feb 2026 20:10:38 +0200 Message-ID: <87jywdc1y9.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 80283 Cc: Stefan Monnier <monnier@HIDDEN>, 80283 <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.0 (-) > I don't mind installing something simpler. I hope Stefan will add a use > case for the semi-bulk and bulk handler cases. If we don't hear back soon, > I'll simplify the patch and we can add new optional arguments and > functionality later. Let's first install a simple version that supports a lambda for suffix-format. This allows using line numbers to uniquify Imenu names. > Question: Should we change the default format to be "()" rather than copy > "<>" from `generate-new-buffer-name` and people can use "<>" if/when they > need it? "<%s>" looks more standard for the default value. However, "<%s>" sorts duplicate names to the end of the completions. While "(%s)" keeps duplicate names grouped together.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 15 Feb 2026 16:52:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 15 11:52:40 2026 Received: from localhost ([127.0.0.1]:47462 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrfMN-0007gR-8g for submit <at> debbugs.gnu.org; Sun, 15 Feb 2026 11:52:39 -0500 Received: from mail-vk1-xa2a.google.com ([2607:f8b0:4864:20::a2a]:46492) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vrfMK-0007gF-Ls for 80283 <at> debbugs.gnu.org; Sun, 15 Feb 2026 11:52:37 -0500 Received: by mail-vk1-xa2a.google.com with SMTP id 71dfb90a1353d-5663601fe8bso2295572e0c.1 for <80283 <at> debbugs.gnu.org>; Sun, 15 Feb 2026 08:52:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771174356; cv=none; d=google.com; s=arc-20240605; b=FRR4JDPGYBkMUTBP1OEFnz8YV/Hovj0c3GtdVn60bVbADkc1aC6/3IKn8e2KPKEJ5B r/gM1t70tmDM6ncWspXSucf6qe/E7C7h1uwFO8fGoLX5sR7fSlHXDop03NYt+WkfdQI8 VhuBujoXUJnXP6bSOlOolYLp9t1zU4uZtSDKRn1QwvEXU0ZjdX6z4Sy2avF9JSJWuX9m vPBW2f7Bgm+tY9ojpU6L4yyigYANY5A8Bx7HxaK7yGsv4khQdytvvxq9iHS3FWn5NQvH 5Vffg5P5kfLXVbtZu1/qSAEfK87982if5E/qlukjQkc3ScySOGUm7L0Z+rjuc0jYVTNe QFkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=BRrv0L+dp+Vv2KzASPsEJXq4MQFCT7IjXXIFpU26fnU=; fh=H8rQM2WAB7RMtzL/cST97L3GQYVrgzUkjWSzxgNeVbA=; b=XpkuiRpnACugIAmriQLk4atlLLJEVE7uRRPYK3yCQoyH+4FkK5X4hVFiK4Uo+fTHhT sN4K4ak+VGGzyTx2gMhOeCNxRrUdW0lg44RnrBUOQOb/llJTYmwVFL2GuPJcJED/+uAk sywf/ACSWR/6eL1N+LQkGZodvasLUnUE1cVJriQccMM5ETMcewjkArnwgaI25sF6Q6Jp nFQMQBLnYKlk5mgijJGIKM36TKzu4r3lVglwoYHqmyjhgd86/F/nKuG0m5zhDN+orsAU 2STZ6WpIRsk2Xt8dg5ri1fCZTO/NfA/UJVtTvixCRPsRsLsOplNUGhoKjOQrgKTRTrJE 01wQ==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771174356; x=1771779156; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=BRrv0L+dp+Vv2KzASPsEJXq4MQFCT7IjXXIFpU26fnU=; b=WusQFKJDbOV+USC2EDjMmZhKyKb0Z/kpfSxupYHkyCS+jw+Q4bMY/+kiyZLQGu0v+o zK8OhRo7DAbj2GCk4Inaz8IcgH/Bi3ikSJC4WTKVj/iqUa9dygg/an1UhiOaVwE5Y6kg PNO9GdBQcyA2WALofycbBZwTDTr77x/Jf5n+vOFb3a/ciM2uFD7CM7xvM4HMwz/2UZn1 ml8fDa/Ha0GUgeTD9ezaNISf8bPbRevPcXe3a27P7+CDnwGU3eHu8MJZ+gCQH1G0Hadc 57q1l14wRjOApfRtnrAjoM6pbnLOsysmpUHAHNbIL7h9QWEhsoFuCogea2+HCiRPylxE 945w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771174356; x=1771779156; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=BRrv0L+dp+Vv2KzASPsEJXq4MQFCT7IjXXIFpU26fnU=; b=PHaJjB1Z1fhMnY8MVPlX8u05U0VTjeSpoij0mHBbTBdGpUtHHjgOVwwiwDEAWSCuep gZ8kx432Ya2UcdrWBwun7ab/Fmc7fJMTEjlja4CMTIV8wmc6ZTYtKvGYdVotvYSJqDDm uLR38Wg7q1qnjVKgZEd0LJfQzFYpnSwM18OZXaLWGxhS4dBH4B96ObNKJhWbkVot2sP6 P0Aeq5d9Hyr5JECy12ocvoQKwTKkfxOwYH5AHo4xXrtmt8JByvznxP7dFuT9wN1KOCYv 4cqfYnsRCMdeQZo1/SvJTv/6O5qFuOSclDDITM/UMJ5Lsf9wtNUyJx1DLA0CNdpxAaM6 5KBA== X-Gm-Message-State: AOJu0Yw4yn7bIvaQjT2DPx/rotzUirztQr660RarKlTlbhcVif6QqSYV v9G1YmtTJEZbh+dLGT3X7/V3MuqAI7QPI0MFvToJjNEhmLL7ju54aLUE7X0+7Q9XoUUGfYWqgUP 269fUQCyTHcVk+Ku1kLhcuWws1wGniOw= X-Gm-Gg: AZuq6aIG9bs6GtRNUzA7CcCYPbqWFqH/GBFVWy+XoPHmVqVD3S5OTwZVaJ4tsHdIu31 JLkzF/ZOxMVpgxGZO4bWJfmXpl2gKmLC1FHsLAgsCJdsJApdx1qphF0Kh1gzhBxpAbGTZEvpeg2 xW9eqH7txs0Ee3hhPBa0wjhI3ISAGfpwUMZM3FyXdZIC7gRVgitgIBYWpLDY1ooLOEIQYSF9ne8 Gi4Sk0t5XmAaDef8zbNAcyAQhn+Fhuvh3zXBUhxR8jc84m6jsjvqZGgeNHYE+6OXjo61g/NEfrI cAt7H8JCfGt+UGK6nvy94fTYe/tmK5ewYrsGuXiQ0C7NkFNbCdOKjnCoUh9xzaX3 X-Received: by 2002:a05:6122:1d8e:b0:563:6e7b:92f9 with SMTP id 71dfb90a1353d-5676aadd830mr2440330e0c.18.1771174355798; Sun, 15 Feb 2026 08:52:35 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> <87pl66trp6.fsf@HIDDEN> In-Reply-To: <87pl66trp6.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 15 Feb 2026 11:52:24 -0500 X-Gm-Features: AaiRm52Y_gxh8lJtRTQ1xEQ40sFP2HA7-uqLYFcMuS-NE9cYwIXoQXHUpHf5j3E Message-ID: <CAN+1Hbo-FY9R-4TZYZTzODRiBs45VagCy=qh17DV4T+TP-e=TQ@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Juri Linkov <juri@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000500dca064adfaabc" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: Stefan Monnier <monnier@HIDDEN>, 80283 <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: 0.0 (/) --000000000000500dca064adfaabc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 15, 2026 at 2:41=E2=80=AFAM Juri Linkov <juri@HIDDEN> wrote= : > > We could install your previous simpler solution first > > since a new function 'uniquify-conflicting-alist-keys' > > raises more questions: the name implies that the simpler > > function 'uniquify-alist-keys' doesn't handle conflicting keys. > > > > Maybe we could add only one function 'uniquify-alist-keys' > > with a new optional argument 'handler'. When it's non-nil > > then ignore 'suffix-format'. > > > > Okay I did that in the attached with revised tests. Stefan suggested a > way > > for a handler to get the entire list of conflicts at once so I worked > that > > option in also, though the function could be closed over and a handler > can > > maintain full context. Check out the docstring and the tests for > examples. > > Sorry, I'm lost with the complexity of the HANDLE-KEYS arg values > 'include-singlets' and 'bulk'. I can't imagine how they could be > used in Imenu. I tried to move meaningful info from annotations > to suffixes, but this can't make keys unique, because often even > annotations are duplicated. So we can't avoid sequential numbers > (2), (3), etc. > > Maybe first we should install 'uniquify-alist-keys' with just > 'suffix-format'? > I don't mind installing something simpler. I hope Stefan will add a use case for the semi-bulk and bulk handler cases. If we don't hear back soon, I'll simplify the patch and we can add new optional arguments and functionality later. Question: Should we change the default format to be "()" rather than copy "<>" from `generate-new-buffer-name` and people can use "<>" if/when they need it? --000000000000500dca064adfaabc Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 15, 2026 at 2:41=E2=80=AFAM Juri Linkov <<a href=3D"mailto:j= uri@HIDDEN">juri@HIDDEN</a>> wrote:</span></div></div><div class= =3D"gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" st= yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd= ing-left:1ex">>=C2=A0 =C2=A0 =C2=A0We could install your previous simple= r solution first<br> >=C2=A0 =C2=A0 =C2=A0since a new function 'uniquify-conflicting-alis= t-keys'<br> >=C2=A0 =C2=A0 =C2=A0raises more questions: the name implies that the si= mpler<br> >=C2=A0 =C2=A0 =C2=A0function 'uniquify-alist-keys' doesn't = handle conflicting keys.<br> ><br> >=C2=A0 =C2=A0 =C2=A0Maybe we could add only one function 'uniquify-= alist-keys'<br> >=C2=A0 =C2=A0 =C2=A0with a new optional argument 'handler'.=C2= =A0 When it's non-nil<br> >=C2=A0 =C2=A0 =C2=A0then ignore 'suffix-format'.<br> ><br> > Okay I did that in the attached with revised tests.=C2=A0 Stefan sugge= sted a way<br> > for a handler to get the entire list of conflicts at once so I worked = that<br> > option in also, though the function could be closed over and a handler= can<br> > maintain full context.=C2=A0 Check out the docstring and the tests for= examples.<br> <br> Sorry, I'm lost with the complexity of the HANDLE-KEYS arg values<br> 'include-singlets' and 'bulk'.=C2=A0 I can't imagine ho= w they could be<br> used in Imenu.=C2=A0 I tried to move meaningful info from annotations<br> to suffixes, but this can't make keys unique, because often even<br> annotations are duplicated.=C2=A0 So we can't avoid sequential numbers<= br> (2), (3), etc.<br> <br> Maybe first we should install 'uniquify-alist-keys' with just '= suffix-format'?<br></blockquote><div><br></div><div class=3D"gmail_defa= ult" style=3D"font-family:monospace">I don't mind installing something = simpler.=C2=A0 I hope Stefan will add a use case for the semi-bulk and bulk= handler cases.=C2=A0 If we don't hear back soon, I'll simplify the= patch and we can add new optional arguments and functionality later.</div>= <div class=3D"gmail_default" style=3D"font-family:monospace"><br></div><div= class=3D"gmail_default" style=3D"font-family:monospace">Question: Should w= e change the default format to be "()" rather than copy "<= ;>" from `generate-new-buffer-name` and people can use "<&g= t;" if/when they need it?</div></div></div> --000000000000500dca064adfaabc--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 15 Feb 2026 07:41:28 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 15 02:41:28 2026 Received: from localhost ([127.0.0.1]:38742 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrWky-00022E-2f for submit <at> debbugs.gnu.org; Sun, 15 Feb 2026 02:41:28 -0500 Received: from mout-p-103.mailbox.org ([2001:67c:2050:0:465::103]:44936) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vrWku-00020y-PA for 80283 <at> debbugs.gnu.org; Sun, 15 Feb 2026 02:41:26 -0500 Received: from smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4fDHs66J47z9tkJ; Sun, 15 Feb 2026 08:41:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1771141274; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=3rLl0XCbr3O0jAg3KKyFjSx4l3qlmDByuI6SBNP6ivY=; b=nc0tJDebvqX5VLB3bijPU30ng3SNB9avFTfEIGwz5Tk5jgVzrowJpUAukoWxgpCbaTfo34 gdswweoxtcDuXH+Mkl1l6IR0r14Hr0aDG7ZW/tmWkhcIoqKLeWUPbmbuDk1WOdjlQFa2Vb FRJPIAB9V5fjURxOx0kVi8lxqkUq35mlD8BXb29k3K+YRB9+ga4dYuikafZaY0chcslOl9 /wnn7MUonyc+xxVUOKjdszMcdqmm3EVz50Lc4p6QTdzgGKZscik3xGBsB1dk+oh32GnwOj erzCcnNOeR+JEpVqgqpNfH/JhQYRUacfoXhA7LD5+/TGqlYvzJzKi6EDI/CcqQ== From: Juri Linkov <juri@HIDDEN> To: =?iso-8859-1?Q?St=E9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys In-Reply-To: <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> Organization: LINKOV.NET References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> Date: Sun, 15 Feb 2026 09:32:29 +0200 Message-ID: <87pl66trp6.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80283 Cc: Stefan Monnier <monnier@HIDDEN>, 80283 <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 (-) > We could install your previous simpler solution first > since a new function 'uniquify-conflicting-alist-keys' > raises more questions: the name implies that the simpler > function 'uniquify-alist-keys' doesn't handle conflicting keys. > > Maybe we could add only one function 'uniquify-alist-keys' > with a new optional argument 'handler'. When it's non-nil > then ignore 'suffix-format'. > > Okay I did that in the attached with revised tests. Stefan suggested a way > for a handler to get the entire list of conflicts at once so I worked that > option in also, though the function could be closed over and a handler can > maintain full context. Check out the docstring and the tests for examples. Sorry, I'm lost with the complexity of the HANDLE-KEYS arg values 'include-singlets' and 'bulk'. I can't imagine how they could be used in Imenu. I tried to move meaningful info from annotations to suffixes, but this can't make keys unique, because often even annotations are duplicated. So we can't avoid sequential numbers (2), (3), etc. Maybe first we should install 'uniquify-alist-keys' with just 'suffix-format'?
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 14 Feb 2026 20:47:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 14 15:47:14 2026 Received: from localhost ([127.0.0.1]:55337 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrMXp-0005OZ-K7 for submit <at> debbugs.gnu.org; Sat, 14 Feb 2026 15:47:14 -0500 Received: from mail-vk1-xa32.google.com ([2607:f8b0:4864:20::a32]:53566) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vrMXm-0005OH-L3 for 80283 <at> debbugs.gnu.org; Sat, 14 Feb 2026 15:47:11 -0500 Received: by mail-vk1-xa32.google.com with SMTP id 71dfb90a1353d-56706fd623fso1001731e0c.3 for <80283 <at> debbugs.gnu.org>; Sat, 14 Feb 2026 12:47:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771102030; cv=none; d=google.com; s=arc-20240605; b=ANHvNTdoeRKIoadhZX87T4SupIj4JSr/sNA6cjctP64ODzmEIc2vPFzpJuOf70rMt+ vtL9BQ4MLm0UgiGYsUR7pyevAh/J66Cu5Q3ixdVsrTjV/Q1yM5sIuxJrQN0xBFHdt4bB RmTmCV9MwIJHCEfohOLzA2IdUv8ObEXaWHV2hwAE32mhe2NYzVUodRdUcrHZsCqMPqM5 vFejNZEz8Qr7JG41s0zAqv6dQWbk/wGGcveP12v9CD9lPDzYqOevlrgzzBBZ61rfNqNk IcbqJBrzXNjEmyAPMuZlYuqHCGJ70/8Uv7SckX6OtcaL/nKVB9n6I4+IDVltHOb/7PRN FV/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=5VJRIlDB52tn5HMxll55X57923rBirO4JvSU6AhrIQg=; fh=H8rQM2WAB7RMtzL/cST97L3GQYVrgzUkjWSzxgNeVbA=; b=B0V3Q7+LF5CfQPJ5Oejbcy6E+4t0s/OILfm4ahyimKQ8LhnU1y2lQ1VMyA+4yqmJTP fPTb64NCZzK5lOLmLNllY21fdt26zp4XrpxWM1BvmYq3KtU7W3nxTwbUnLPF8A0A8JJd rbvH4+AsbAvWzbseQrXqCU9wzMdBQfZk+n8N1M/nlBVfn8LCmNee98I/+59XTu9k6IOj 1uzbl8y/P1TkHkaBtr0EIAwvftKfcqLiN7lfYVTPuuBUF3IvBn+Pg4uJpd0slObcZP8a X0Oo9prT6EqbRaTvJ2QMCbV6qZDgBACNLkSccCERks+9EHVUOh4JEspJKDtifFer2Zli lXFg==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771102030; x=1771706830; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=5VJRIlDB52tn5HMxll55X57923rBirO4JvSU6AhrIQg=; b=TgsTCoDPP9ivUK+3zc541lOb+DkvMFjOuzOvW6zP8mPKfIdqhvq3OzlmIXHbj5ESX8 +Dcg48n7UFTiflOBMsjWOOa6fzF1MwW3eTD3nvDzun8UVs6AS73X/H9QhGxQFWgc4AzH HC36oq3ulbkd0MXrwgfPti7WP/p1rfoHHnoQkMBgF3tAQcnpbwtMPr09CcrDwjd+0ZxS GqIBqLF0yXppHj80eFxsxv4qNw2RhtuJtHbgONWLSdq8klSLrzetuvVyCGu98F9lnFDG 0mBzjtEz+NtauH6P2F0OR4oLm+ZBJCzpVNUNfdWccDUnpe4XNVFWLuHrETljfvPh5h49 DHmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771102030; x=1771706830; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=5VJRIlDB52tn5HMxll55X57923rBirO4JvSU6AhrIQg=; b=ry1gPMnXHIseiNEcOrXNp/puPpJSEnh0+Dw1ml5lxyAvEOgIqdfGOjwgxRn/TvzZC8 X0zQxBAkVNHjjL3ZaQv1WsQOTlz1oyPuNkpHhhZJR1tTbwepcvWp37TnlWnVXDH89EXn h9e38JkYMiKLbfmr2jI0wmLzDzRd6DpKSa99t61U70HiKvSast9iVkPYPXCmQW1R8Gon ijLEg2xlnBbWelF2rGrK4rQXTH9c8Pc7F7NzTbKxt1U+q0+t4L1dbsvubVOXumvB+nE4 sZc+Lj3FwjOaIwJRptv7kSX8oqQcACdMp6C0XJXsF4RGEKXNaS3MxKV3rvmbY1joJzjX O0yA== X-Gm-Message-State: AOJu0YzPC94CJFF3qfDpIbP641OmiZ+UUPfd5t2wddKXJtQLEuy9BLO7 nK4uchLQ8kQZDoN+CMmxK0/MVrkAXhfwxGZ6kDIReZqpCGWIqZjVYRawWMqiGU8unZ59L3xSULj 3BwHAfxnRrA0Zbs7Q49vYJIyUInv7TiNzGQ== X-Gm-Gg: AZuq6aI4pS/EZ73+s3sfydGiMrvghS9aypO+aoVzbWifaItyFN91SYlSmjHwk2CLvwm MMkV5dbfFqI/EbER735ik+a+jKULW5fw1ZhGdNduXqrLw8vRnv+jfAeM+KiqLZ7r8G3yDSzcJl0 gDsl2aJBHvjyFKHt2J5h/UjXeArXnA3ppeqT05qfUry16ihbjvv+doXqG1OnZQYs37IadOMrGHF MIEBlzlP09HIih9jfytk67nI7BQHV+dGyhaEaEAoykIpt2UvccpiSH8xb0vCL/sJ1ouPI4AxZ0h R4ReDh7h0aaxD4RRSOKkCQGLLYqy7KKlxyBYCZwnAVOi0jKRxzXTSnwJyKPqMsg= X-Received: by 2002:a05:6102:5106:b0:5f5:7718:72e9 with SMTP id ada2fe7eead31-5fe2acf568bmr1207111137.2.1771102029790; Sat, 14 Feb 2026 12:47:09 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> <87fr73p5v4.fsf@HIDDEN> In-Reply-To: <87fr73p5v4.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sat, 14 Feb 2026 15:46:58 -0500 X-Gm-Features: AaiRm52P2u18BPI_RvDbLd-6HGpnBiXxRR4TJnFVhEG34llPTlkv4GxsxSW4riE Message-ID: <CAN+1HbpqLiF__e6EMtKbvdWpTc=ZBeFu-38rNzP40FQ855tkTQ@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Juri Linkov <juri@HIDDEN> Content-Type: multipart/mixed; boundary="00000000000058e6c1064aced3c0" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: Stefan Monnier <monnier@HIDDEN>, 80283 <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: 0.0 (/) --00000000000058e6c1064aced3c0 Content-Type: multipart/alternative; boundary="00000000000058e6c1064aced3be" --00000000000058e6c1064aced3be Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Feb 14, 2026 at 12:58=E2=80=AFPM Juri Linkov <juri@HIDDEN> wrot= e: > > Here's the latest patch which includes the function > > 'uniquify-conflicting-alist-keys' and tests for it. That function was > > discussed in another thread with Stefan. > > We could install your previous simpler solution first > since a new function 'uniquify-conflicting-alist-keys' > raises more questions: the name implies that the simpler > function 'uniquify-alist-keys' doesn't handle conflicting keys. > > Maybe we could add only one function 'uniquify-alist-keys' > with a new optional argument 'handler'. When it's non-nil > then ignore 'suffix-format'. > Okay I did that in the attached with revised tests. Stefan suggested a way for a handler to get the entire list of conflicts at once so I worked that option in also, though the function could be closed over and a handler can maintain full context. Check out the docstring and the tests for examples. -St=C3=A9phane --00000000000058e6c1064aced3be Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sat, Feb 14, 2026 at 12:58=E2=80=AFPM Juri Linkov <<a href=3D"mailto:= juri@HIDDEN">juri@HIDDEN</a>> wrote:</span></div></div><div clas= s=3D"gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" s= tyle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pad= ding-left:1ex">> Here's the latest patch which includes the function= <br> > 'uniquify-conflicting-alist-keys' and tests for it.=C2=A0 That= function was<br> > discussed in another thread with Stefan.<br> <br> We could install your previous simpler solution first<br> since a new function 'uniquify-conflicting-alist-keys'<br> raises more questions: the name implies that the simpler<br> function 'uniquify-alist-keys' doesn't handle conflicting keys.= <br> <br> Maybe we could add only one function 'uniquify-alist-keys'<br> with a new optional argument 'handler'.=C2=A0 When it's non-nil= <br> then ignore 'suffix-format'.<br></blockquote><div><br></div><div cl= ass=3D"gmail_default" style=3D"font-family:monospace">Okay I did that in th= e attached with revised tests.=C2=A0 Stefan suggested a way for a handler t= o get the entire list of conflicts at once so=C2=A0I worked that=C2=A0optio= n in also, though the function could be closed over and a handler can maint= ain full context.=C2=A0 Check out the docstring and the tests for examples.= </div><div class=3D"gmail_default" style=3D"font-family:monospace"><br></di= v><div class=3D"gmail_default" style=3D"font-family:monospace">-St=C3=A9pha= ne=C2=A0</div></div></div> --00000000000058e6c1064aced3be-- --00000000000058e6c1064aced3c0 Content-Type: application/octet-stream; name="0001-Add-function-uniquify-alist-keys-bug-80283.patch" Content-Disposition: attachment; filename="0001-Add-function-uniquify-alist-keys-bug-80283.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mlmsec740> X-Attachment-Id: f_mlmsec740 RnJvbSBjNGZmNWFhYjNhYzBjNDBjYjc4MjQxYWQxZGFjMGVmMWY3OWYwZmQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjkgSmFuIDIwMjYgMTM6MDg6MTQgLTA1MDAK U3ViamVjdDogW1BBVENIXSBBZGQgZnVuY3Rpb24gdW5pcXVpZnktYWxpc3Qta2V5cyAoYnVnIzgw MjgzKQoKVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIG1ha2UgZHVw bGljYXRlCidjb21wbGV0aW5nLXJlYWQnIGNhbmRpZGF0ZXMgdW5pcXVlLgoKKiBsaXNwL2VtYWNz LWxpc3Avc3Vici14LmVsICh1bmlxdWlmeS1hbGlzdC1rZXlzKTogTmV3IGRlZnVuLgoqIHRlc3Qv bGlzcC9taXNjLXRlc3RzLmVsIChtaXNjLXRlc3QtdW5pcXVpZnktYWxpc3Qta2V5cyk6IE5ldwp0 ZXN0LgoqIGV0Yy9ORVdTOiBBbm5vdW5jZSB0aGUgbmV3IGZ1bmN0aW9uLgotLS0KIGV0Yy9ORVdT ICAgICAgICAgICAgICAgICAgfCAxMiArKysrKysrCiBsaXNwL2VtYWNzLWxpc3Avc3Vici14LmVs IHwgNzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0L2xpc3Av bWlzYy10ZXN0cy5lbCAgIHwgNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IDMgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9ldGMvTkVX UyBiL2V0Yy9ORVdTCmluZGV4IDlkMzZmNmMzZDk2Li43OTk3NjcyNjAxOCAxMDA2NDQKLS0tIGEv ZXRjL05FV1MKKysrIGIvZXRjL05FV1MKQEAgLTMwODgsNiArMzA4OCwxOCBAQCBkZXRlcm1pbmVk IGJ5IHRoZSBuZXcgdXNlciBvcHRpb24gJ3B1bHNlLWZhY2UtZHVyYXRpb24nLgogCiAqKiBNaXNj ZWxsYW5lb3VzCiAKKy0tLQorKioqIE5ldyBmdW5jdGlvbiAndW5pcXVpZnktYWxpc3Qta2V5cycK K1RoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byAnZ2VuZXJhdGUtbmV3LWJ1ZmZlci1uYW1lJyBh bmQgcmV0dXJucyBhCitjb3B5IG9mIGFuIGFsaXN0IHdpdGggIjxOVU1CRVI+IiBhcHBlbmRlZCB0 byBkdXBsaWNhdGUga2V5czsgeW91IGNhbgorb3ZlcnJpZGUgZm9ybWF0IG9mIHRoZSBhcHBlbmRl ZCBudW1iZXIsIGZvciBleGFtcGxlIHdpdGggIihOVU1CRVIpIiwgb3IKK3VzaW5nIGEgZnVuY3Rp b24gd2hpY2ggaXMgcGFzc2VkIHRoZSBlbGVtZW50IHRvIHVuaXF1aWZ5IGFuZCB0aGUKK2luY3Jl bWVudGluZyBjb3VudC4gIEl0IGFsc28gYWNjZXB0cyBhbiBvcHRpb25hbCBoYW5kbGVyIGZ1bmN0 aW9uIGNhbGxlZAord2l0aCBlYWNoIGFsaXN0IG9uZSBhdCBhIHRpbWUgd2l0aCBlbGVtZW50cyB0 aGF0IHNoYXJlIGEgY29uZmxpY3RpbmcKK2tleSwgb3IgdGhlIGhhbmRsZXIgY2FuIHJlY2VpdmUg YWxsIGNvbmZsaWN0cyBpbiBidWxrIGZvciBtb3JlCitkb21haW4tc3BlY2lmaWMgY29udHJvbCBv dmVyIGtleSByZXBsYWNlbWVudHMuICBOb3RlOiBhbGwgbm9uLXN0cmluZwora2V5cyBhcmUgZmly c3QgY29udmVydGVkIHRvIHN0cmluZ3MuCisKIC0tLQogKioqIFRoZSBmaXJzdCBjbGllbnQgZnJh bWUgbm93IHNob3dzIHdhcm5pbmdzIGZyb20gZGFlbW9uIHN0YXJ0dXAuCiBXaGVuIHRoZXJlIGFy ZSB3YXJuaW5ncyBlbWl0dGVkIGR1cmluZyBFbWFjcyBzdGFydHVwLCB1c3VhbGx5IGR1ZSB0bwpk aWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbCBiL2xpc3AvZW1hY3MtbGlzcC9z dWJyLXguZWwKaW5kZXggOGQwNDk1ODQ4N2YuLjA2ZjA2ODUwNDU5IDEwMDY0NAotLS0gYS9saXNw L2VtYWNzLWxpc3Avc3Vici14LmVsCisrKyBiL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKQEAg LTU4NSw2ICs1ODUsNzggQEAgZW1hY3MtZXRjLS1oaWRlLWxvY2FsLXZhcmlhYmxlcwogICAgICAg ICAgICAgICAgICAgICAgICAgICAocHJvZ24gKGZvcndhcmQtbGluZSAtMSkgKHBvaW50KSkKICAg ICAgICAgICAgICAgICAgICAgICAgIChwb2ludC1tYXgpKSkpKQogCis7OzsjIyNhdXRvbG9hZAor ZShkZWZ1biB1bmlxdWlmeS1hbGlzdC1rZXlzIChhbGlzdCAmb3B0aW9uYWwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXgtZm9ybWF0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaGFuZGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGhhbmRsZS1rZXlzKQorICAiUmV0dXJuIGEgY29weSBvZiBBTElTVCB3aXRoIFwiPE5VTUJFUj5c IiBhcHBlbmRlZCB0byBkdXBsaWNhdGUga2V5cy4KK0FMSVNUIGtleXMgc2hvdWxkIGJlIHN0cmlu Z3MgYW5kIG1heSBoYXZlIHRleHQgcHJvcGVydGllcyB3aGljaCByZW1haW4KK2ludGFjdC4gIE5v bi1zdHJpbmcga2V5cyBhcmUgY29udmVydGVkIHRvIHN0cmluZ3MuCisKK05VTUJFUiBpcyBhIG1v bm90b25pY2FsbHkgaW5jcmVhc2luZyBpbnRlZ2VyIHN0YXJ0aW5nIGF0IDIgZm9yIHRoZSBmaXJz dAorZHVwbGljYXRlLgorCitJZiBTVUZGSVgtRk9STUFUIGlzIG5vbi1uaWwsIGl0IGlzIGEgdmFs aWQgZm9ybWF0LWNvbnRyb2wgc3RyaW5nIHBhc3NlZAordG8gdGhlIGZ1bmN0aW9uIGBmb3JtYXQn LCBhbmQgY29udGFpbmluZyBhIHNpbmdsZSBlbWJlZGRlZCBcIiVkXCIuICBJdAorZGVmYXVsdHMg dG8gXCI8JWQ+XCIuICBJZiBTVUZGSVgtRk9STUFUIGlzIGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0 aCB0d28KK2FyZ3VtZW50czogdGhlIGFsaXN0IGVsZW1lbnQgdG8gdW5pcXVpZnksIHRoZSBpbmNy ZW1lbnRpbmcgY291bnQuICBJdAorc2hvdWxkIHJldHVybiBhIHN0cmluZy4gIFVzZWQgaW4gdGhp cyB3YXksIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0bworYGdlbmVyYXRlLW5ldy1idWZmZXIt bmFtZScgYnV0IGZvciBhbGlzdHMuCisKK0lmIEhBTkRMRVIgaXMgbm9uLW5pbCwgaWdub3JlIFNV RkZJWC1GT1JNQVQuICBIQU5ETEVSIGlzIGEgZnVuY3Rpb24KK3Bhc3NlZCBhbGlzdHMgZXhjZXJw dGVkIGZyb20gQUxJU1QsIG9uZSBzZXQgb2YgY29uZmxpY3RzIGF0IGEgdGltZSB3aGVyZQorZWFj aCBlbGVtZW50IHNoYXJlcyBpZGVudGljYWwga2V5cy4gIElmIEhBTkRMRS1LRVlTIGlzCitgaW5j bHVkZS1zaW5nbGV0cycsIGFsc28gY2FsbCBIQU5ETEVSIHdpdGggYWxpc3QgZXhjZXJwdHMgb2YK K25vbi1jb25mbGljdGluZyBrZXlzLCBpLmUuLCBzaW5nbGUtZWxlbWVudCBhbGlzdHMuCisKK0hB TkRMRVIgc2hvdWxkIHJldHVybiBlYWNoIHBhc3NlZCBhbGlzdCB3aXRoIGl0cyBrZXlzIHJlcGxh Y2VkIHRvCithY2NvdW50IGZvciB0aGVpciBjb25mbGljdHMuICBJdCBpcyBjdXN0b21hcnkgdG8g cmV0dXJuIHRoZSBhbGlzdCBpbiB0aGUKK3NhbWUgb3JkZXIgdGhhdCBpdCByZWNlaXZlZC4KKwor SWYgSEFORExFLUtFWVMgaXMgYGJ1bGsnLCBjYWxsIEhBTkRMRVIgd2l0aCBhIGhhc2ggdGFibGUg Y29udGFpbmluZyBhbGwKK2FsaXN0IGVudHJpZXMgYXQgb25jZS4gIEVhY2ggaGFzaCB0YWJsZSBl bGVtZW50IGtleSBpcyB0aGUgdW5pcXVlIGFsaXN0CitrZXkgY29tbW9uIHRvIGl0cyB2YWx1ZSB3 aGljaCBpcyBhIGxpc3Qgb2YgYWxpc3QgZW50cmllcy4gIFRoZXNlIGluY2x1ZGUKK3NpbmdsZS1l bGVtZW50IG5vbi1jb25mbGljdGluZyBlbnRyaWVzLiAgSEFORExFUiBzaG91bGQgcmV0dXJuIGEK K3VuaXF1aWZpZWQgYWxpc3QgYW5kIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgb3JkZXIgb2YgcmV0 dXJuZWQgZWxlbWVudHMuCisKK0l0IGlzIHVwIHRvIEhBTkRMRVIgdG8gZW5zdXJlIHVuaXF1ZW5l c3MuIgorICAobGV0ICgodW5pcXVlcykKKyAgICAgICAgKGh0IChtYWtlLWhhc2gtdGFibGUgOnNp emUgKGxlbmd0aCBhbGlzdCkgOnRlc3QgIydlcXVhbCkpKQorICAgIChkb2xpc3QgKGVsdCBhbGlz dCkKKyAgICAgIChsZXQqICgoa2V5IChjYXIgZWx0KSkKKyAgICAgICAgICAgICAoa2V5IChpZiAo c3RyaW5ncCBrZXkpIGtleSAoZm9ybWF0ICIlUyIga2V5KSkpCisgICAgICAgICAgICAgKHVuaXF1 ZS1rZXkga2V5KSA7IExlYXZlIHByb3BlcnRpZXMgaW50YWN0LgorICAgICAgICAgICAgIChrZXkg KHN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGtleSkpCisgICAgICAgICAgICAgKGNvdW50KSkKKyAg ICAgICAgKGlmIGhhbmRsZXIKKyAgICAgICAgICAgIChpZi1sZXQqICgoZW50cnkgKGdldGhhc2gg a2V5IGh0KSkpCisgICAgICAgICAgICAgICAgKHB1dGhhc2gga2V5IChjb25zIGVsdCBlbnRyeSkg aHQpCisgICAgICAgICAgICAgIChwdXRoYXNoIGtleSAobGlzdCBlbHQpIGh0KSkKKyAgICAgICAg ICAod2hlbiAoc2V0cSBjb3VudCAoZ2V0aGFzaCBrZXkgaHQpKQorICAgICAgICAgICAgKHNldHEg Y291bnQgKDErIGNvdW50KSkKKyAgICAgICAgICAgIChzZXRxIHVuaXF1ZS1rZXkgKGlmIChmdW5j dGlvbnAgc3VmZml4LWZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChm dW5jYWxsIHN1ZmZpeC1mb3JtYXQgZWx0IGNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChmb3JtYXQgKGNvbmNhdCAiJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChvciBzdWZmaXgtZm9ybWF0ICI8JWQ+IikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUta2V5IGNvdW50KSkpKQorICAgICAg ICAgIChwdXNoIChjb25zIHVuaXF1ZS1rZXkgKGNkciBlbHQpKSB1bmlxdWVzKQorICAgICAgICAg IChwdXRoYXNoIGtleSAob3IgY291bnQgMSkgaHQpKSkpCisgICAgKGlmIGhhbmRsZXIKKyAgICAg IChpZiAoZXEgaGFuZGxlLWtleXMgJ2J1bGspCisgICAgICAgICAgKGZ1bmNhbGwgaGFuZGxlciBo dCkKKyAgICAgICAgKG1hcGhhc2ggKGxhbWJkYSAoa2V5IGVsdHMpCisgICAgICAgICAgICAgICAg ICAgKHNldHEgdW5pcXVlcworICAgICAgICAgICAgICAgICAgICAgICAgIChuY29uYworICAgICAg ICAgICAgICAgICAgICAgICAgICAoaWYgKGFuZCAobm90IChlcSBoYW5kbGUta2V5cyAnaW5jbHVk ZS1zaW5nbGV0cykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAxIChs ZW5ndGggZWx0cykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0cworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIGhhbmRsZXIgZWx0cykpCisgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuaXF1ZXMpKSkKKyAgICAgICAgICAgICAgICAgaHQpCisgICAgICAg IChucmV2ZXJzZSB1bmlxdWVzKSkKKyAgICAobnJldmVyc2UgdW5pcXVlcykpKSkKKwogKHByb3Zp ZGUgJ3N1YnIteCkKIAogOzs7IHN1YnIteC5lbCBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL3Rlc3Qv bGlzcC9taXNjLXRlc3RzLmVsIGIvdGVzdC9saXNwL21pc2MtdGVzdHMuZWwKaW5kZXggYjZmNWYw MWFkMmEuLjkyZTFjM2ViZDc5IDEwMDY0NAotLS0gYS90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbAor KysgYi90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbApAQCAtMjQzLDUgKzI0Myw3MCBAQCBtaXNjLXRl c3Qtc3RyaW5nLXBpeGVsLXdpZHRoLWRpc3BsYXktbGluZS1udW1iZXJzCiAgICAgICAoc2V0cS1k ZWZhdWx0IGRpc3BsYXktbGluZS1udW1iZXJzIGRsbikpCiAgICAgKHNob3VsZCAoPSB3MCB3MSkp KSkKIAorKGVydC1kZWZ0ZXN0IG1pc2MtdGVzdC11bmlxdWlmeS1hbGlzdC1rZXlzICgpCisgIChz aG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAgICAnKCkp CisgICAgICAgICAgICAgICAgICcoKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlz dC1rZXlzCisgICAgICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImIiICJCIikgKCJjIiAiQyIp ICgiZCIgIkQiKSAoImUiICJFIikpKQorICAgICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImIi ICJCIikgKCJjIiAiQyIpICgiZCIgIkQiKSAoImUiICJFIikpKSkKKyAgKHNob3VsZCAoZXF1YWwg KHVuaXF1aWZ5LWFsaXN0LWtleXMKKyAgICAgICAgICAgICAgICAgICcoKCJhIiAiQSIpICgiYSIg IkEyIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkIiAiRDIiKSAoImQiICJEMyIp ICgiZSIgIkUiKSkpCisgICAgICAgICAgICAgICAgICcoKCJhIiAiQSIpICgiYTwyPiIgIkEyIikg KCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkPDI+IiAiRDIiKSAoImQ8Mz4iICJEMyIp ICgiZSIgIkUiKSkpKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktYWxpc3Qta2V5cworICAg ICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhIiAiQTIiKSAoImIiICJCIikgKCJjIiAiQyIp ICgiZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKQorICAgICAgICAgICAg ICAgICAgIiglZCkiKQorICAgICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImEoMikiICJBMiIp ICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCgyKSIgIkQyIikgKCJkKDMpIiAiRDMi KSAoImUiICJFIikpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHVuaXF1aWZ5LWFsaXN0LWtleXMKKyAg ICAgICAgICAgICAgICAgICcoKCJhIiAiQSIpICgiYSIgIkEyIikgKCJiIiAiQiIpICgiYyIgIkMi KSAoImQiICJEIikgKCJkIiAiRDIiKSAoImQiICJEMyIpICgiZSIgIkUiKSkKKyAgICAgICAgICAg ICAgICAgIChsYW1iZGEgKGVsdCBjb3VudCkgKGZvcm1hdCAiJXNbJWRdIiAoY2FyIGVsdCkgY291 bnQpKSkKKyAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhWzJdIiAiQTIiKSAoImIiICJC IikgKCJjIiAiQyIpICgiZCIgIkQiKSAoImRbMl0iICJEMiIpICgiZFszXSIgIkQzIikgKCJlIiAi RSIpKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAg ICAgICAgICBgKCgsKHByb3BlcnRpemUgImEiICdpZCAxKSAiQSIpICgsKHByb3BlcnRpemUgImEi ICdpZCAyKSAiQTIiKQorICAgICAgICAgICAgICAgICAgICAoImIiICJCIikgKCJjIiAiQyIpICgi ZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKSkKKyAgICAgICAgICAgICAg ICAgYCgoLChwcm9wZXJ0aXplICJhIiAnaWQgMSkgIkEiKSAoLChwcm9wZXJ0aXplICJhPDI+IiAn aWQgMikgIkEyIikKKyAgICAgICAgICAgICAgICAgICAoImIiICJCIikgKCJjIiAiQyIpICgiZCIg IkQiKSAoImQ8Mj4iICJEMiIpICgiZDwzPiIgIkQzIikgKCJlIiAiRSIpKSkpCisgIChzaG91bGQg KGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAgICAnKCgxICJBIikg KDEgIkEyIikgKDIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCIgIkQyIikgKCJkIiAiRDMi KSAoImUiICJFIikpKQorICAgICAgICAgICAgICAgICAnKCgiMSIgIkEiKSAoIjE8Mj4iICJBMiIp ICgiMiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZDwyPiIgIkQyIikgKCJkPDM+IiAiRDMi KSAoImUiICJFIikpKSkKKyAgKHNob3VsZCAoZXF1YWwgKGxldCAoKGNvdW50IDEpKQorICAgICAg ICAgICAgICAgICAgICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAgICAgICco KCJhIiAiQSIpICgiYSIgIkEyIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkIiAi RDIiKSAoImQiICJEMyIpICgiZSIgIkUiKSkKKyAgICAgICAgICAgICAgICAgICAgbmlsCisgICAg ICAgICAgICAgICAgICAgIChsYW1iZGEgKGFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgIChs ZXQgKCh1bmlxdWVzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIChkb2xpc3QgKGVsdCBhbGlz dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGNvbnMgKGZvcm1hdCAiJXMlZCIg KGNhciBlbHQpIChzZXRxIGNvdW50ICgxKyBjb3VudCkpKSAoY2RyIGVsdCkpIHVuaXF1ZXMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgKG5yZXZlcnNlIHVuaXF1ZXMpKSkpKQorICAgICAgICAg ICAgICAgICAnKCgiYTMiICJBIikgKCJhMiIgIkEyIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQ2 IiAiRCIpICgiZDUiICJEMiIpICgiZDQiICJEMyIpICgiZSIgIkUiKSkpKQorICAoc2hvdWxkIChl cXVhbCAobGV0ICgoY291bnQgMSkpCisgICAgICAgICAgICAgICAgICAgKHVuaXF1aWZ5LWFsaXN0 LWtleXMKKyAgICAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhIiAiQTIiKSAoImIiICJC IikgKCJjIiAiQyIpICgiZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKQor ICAgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoYWxp c3QpCisgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHVuaXF1ZXMpKQorICAgICAgICAgICAg ICAgICAgICAgICAgKGRvbGlzdCAoZWx0IGFsaXN0KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAocHVzaCAoY29ucyAoZm9ybWF0ICIlcyVkIiAoY2FyIGVsdCkgKHNldHEgY291bnQgKDErIGNv dW50KSkpIChjZHIgZWx0KSkgdW5pcXVlcykpCisgICAgICAgICAgICAgICAgICAgICAgICAobnJl dmVyc2UgdW5pcXVlcykpKQorICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZS1zaW5nbGV0cykp CisgICAgICAgICAgICAgICAgICcoKCJhMyIgIkEiKSAoImEyIiAiQTIiKSAoImI0IiAiQiIpICgi YzUiICJDIikgKCJkOCIgIkQiKSAoImQ3IiAiRDIiKSAoImQ2IiAiRDMiKSAoImU5IiAiRSIpKSkp CisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAg ICAnKCgiYSIgIkEiKSAoImEiICJBMiIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgi ZCIgIkQyIikgKCJkIiAiRDMiKSAoImUiICJFIikpCisgICAgICAgICAgICAgICAgICBuaWwKKyAg ICAgICAgICAgICAgICAgIChsYW1iZGEgKGh0KQorICAgICAgICAgICAgICAgICAgICAobGV0ICgo Y291bnQgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuaXF1ZXMpKQorICAgICAgICAg ICAgICAgICAgICAgIChtYXBoYXNoIChsYW1iZGEgKGtleSBlbHRzKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgdW5pcXVlcworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG5jb25jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGRvbGlzdCAoZWx0IGVsdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAocHVzaCAoY29ucyAoZm9ybWF0ICIlcyVkIiAoY2FyIGVsdCkgKHNldHEgY291 bnQgKDErIGNvdW50KSkpIChjZHIgZWx0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuaXF1ZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuaXF1ZXMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo dCkKKyAgICAgICAgICAgICAgICAgICAgICAobnJldmVyc2UgdW5pcXVlcykpKQorICAgICAgICAg ICAgICAgICAgJ2J1bGspCisgICAgICAgICAgICAgICAgICcoKCJhMiIgIkEyIikgKCJhMyIgIkEi KSAoImI0IiAiQiIpICgiYzUiICJDIikgKCJkNiIgIkQzIikgKCJkNyIgIkQyIikgKCJkOCIgIkQi KSAoImU5IiAiRSIpKSkpKQorCiAocHJvdmlkZSAnbWlzYy10ZXN0cykKIDs7OyBtaXNjLXRlc3Rz LmVsIGVuZHMgaGVyZQotLSAKMi41Mi4wCgo= --00000000000058e6c1064aced3c0--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 14 Feb 2026 17:58:46 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 14 12:58:46 2026 Received: from localhost ([127.0.0.1]:52301 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrJuo-0006EK-Aj for submit <at> debbugs.gnu.org; Sat, 14 Feb 2026 12:58:46 -0500 Received: from mout-p-102.mailbox.org ([2001:67c:2050:0:465::102]:59252) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vrJuk-0006Cv-Me for 80283 <at> debbugs.gnu.org; Sat, 14 Feb 2026 12:58:44 -0500 Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4fCxbp6qQnz9vGY; Sat, 14 Feb 2026 18:58:30 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1771091911; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=QrNaKIZLdzWv1EDqO+9MT3ZSRV6RmIsNW8cJuMgGp4o=; b=Jf7Oexn7kw34DNpTWD6g4paBsSxXCGiIk4ywhViIuvzr6KUXKB0KNmfvWp2y44SA2HS+cW 7cKuKwHJ65NKb1rZ0Hk7RKeIV/T6Dspl4jZk7Qd7mvr5DR2cVvfhnmbD1p1VMBtPFdAyj7 qRyV6Tpx+M0ygumkGfnkJYfEp4RfUfpDCOJnLvJoKi5I+7wzvohkdLp5IfJ3quM8jwN4S+ nOiV4RyAIDUTuxb+wMnXFCRhnRisK6+oUg+9B5PEiMEwKfaWSzB5Cfq5o8f9+/MN/uCswq 8m4/hmU2CiR9KSdnX237c1iBldGAdjcxzUtwrzETy/N+y1ezCrMVVjo1r19k7Q== Authentication-Results: outgoing_mbo_mout; dkim=none; spf=pass (outgoing_mbo_mout: domain of juri@HIDDEN designates 2001:67c:2050:b231:465::202 as permitted sender) smtp.mailfrom=juri@HIDDEN From: Juri Linkov <juri@HIDDEN> To: =?iso-8859-1?Q?St=E9phane?= Marks <shipmints@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys In-Reply-To: <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> Organization: LINKOV.NET References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> Date: Sat, 14 Feb 2026 19:55:27 +0200 Message-ID: <87fr73p5v4.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Rspamd-Queue-Id: 4fCxbp6qQnz9vGY X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 80283 Cc: Stefan Monnier <monnier@HIDDEN>, 80283 <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.0 (-) > Here's the latest patch which includes the function > 'uniquify-conflicting-alist-keys' and tests for it. That function was > discussed in another thread with Stefan. We could install your previous simpler solution first since a new function 'uniquify-conflicting-alist-keys' raises more questions: the name implies that the simpler function 'uniquify-alist-keys' doesn't handle conflicting keys. Maybe we could add only one function 'uniquify-alist-keys' with a new optional argument 'handler'. When it's non-nil then ignore 'suffix-format'.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 14 Feb 2026 17:08:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 14 12:08:54 2026 Received: from localhost ([127.0.0.1]:51430 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vrJ8X-00080z-U5 for submit <at> debbugs.gnu.org; Sat, 14 Feb 2026 12:08:54 -0500 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]:51671) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vrJ8V-00080h-OC for 80283 <at> debbugs.gnu.org; Sat, 14 Feb 2026 12:08:52 -0500 Received: by mail-vs1-xe29.google.com with SMTP id ada2fe7eead31-5fa26e497abso1504452137.3 for <80283 <at> debbugs.gnu.org>; Sat, 14 Feb 2026 09:08:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771088931; cv=none; d=google.com; s=arc-20240605; b=j0isiDSVOzyYjQmNbDuRWYmj3PyR40jZ0Gh3qX761Zkj4i6f9TeuMOjO7sA0zDLFbj alAVqv6PSWhSXUQSe6TLVDMIFmGZjFn6DWbIA3ZmuYFFX5dMVm0cVEkA7H79rTbnU/oC iO1oicI4H8lM0+qnr2CwQ/HFGNd6hEjQPTbkPSwhI0XIJ8I65mS+6IGgDK731BGZMTMs 4/NlDRu/RVekDLaDx9VcQsgRZyvzul07cZOwxWVY0zSoSDE3EzRLfBGjXqKDX9Z/BYBm uqPJqT2QlFx35g3bXSxLIEPBZ8CVc4ibyHeIWb60JkxcVCzKUTSoBuY+VaRYFxswG2my PXSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=eHKYAXcffkKskrd26padvfDWmxIQHr/Q21qNYnbuq3E=; fh=H8rQM2WAB7RMtzL/cST97L3GQYVrgzUkjWSzxgNeVbA=; b=dmbykfgcx0Ui/D+8FNdQmQ6mTMqCfFKGu6YGndLc4uvktjte07vY1NkSUkxAKT9peY HJzrh5Eneq7QRFcrskynroLNhM225ney54zsYTe+gzXc7fz7ghnD8xuATVlQLdv9g7H5 yr1geuGt8LSkzzBYFn320wiUS9VWd5rFXTsVBNRDEBBCQx/9EpfVckMsAXABllqOBrow 4WyWzqXpr974lidaawCb4RCZ6gtGEa2LaawGupLU48Cb2UQYw/MJyxX+QvfQWHKujSxQ PZ61I2aVczLco167qRVptNt8g741gn/bmNCo9zj6S2bteDjYjrxsFpU9X9mLBMNpRVId NB5A==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771088931; x=1771693731; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=eHKYAXcffkKskrd26padvfDWmxIQHr/Q21qNYnbuq3E=; b=Azf7ILoBVC3tKcl+hSBY6SpajWFzM2ep7TJjitauMts8sYC/SIKkA2Nm1P7IP1P4tb Pob2bFIjI5lgV4idbQzteusdIE2U3opD3mAf6rQfkRwg6taxKTvD3Dnl+v1e4OnfBrJV o/xuoCxQBagcz7s427eC1bLcahojGuEVWfTu/UwRmelbQCJOgSe+B08PK/cBwvtH5UZv rfz7M8JtpM58+DNomqu89SCxYsrqQ2fD6wldxxX1msnWUlReeyRKAuIhCkq8tsMOPsSB ChMO1Le+v6M/u5XaC/pIQy3KyPHqzLG3OO7fubbxvXGdKs4qkgpV2yv+0etuV+1bzQ2a jjlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771088931; x=1771693731; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=eHKYAXcffkKskrd26padvfDWmxIQHr/Q21qNYnbuq3E=; b=gB6j1fSSDgG+uOASSHmOSKv5TRyABl0Lk116QdHXpdFEDY7v7PVlIsXDSuRElvM5ro PGqVeYJZfY96bLPtDJKpaBZVkf/jpCHpE4DAeQN1+dl9aSIgE5eShg+N6CMh6a/XzA3S 2nbTeDuX08T7mD5Yc/jbvUo+v507rgN+/EkKDjP/D9UGOGYK1kus1t4FOieQxbVj5R0R CEAEdKOG0bKBrprTXWwcgL++OUjy+NYefgYsoTEy8D6PABiWummDFwd91sV3Ehr5X329 DweoTaL/+wyDkP9TdA6Mv+agkFlBf6Z7mXOrl4QSYPrOIiaoZxJ93ahjeg65FnsFsJFr vYBg== X-Gm-Message-State: AOJu0YzX01pa2Bw57T8X5LISMcSEfnhNLoqxbaMDQHPM4SV5u87cMsV9 yA1fxZYu/oOrpxMd3MViT3UwaGkTJK1uYLmJaS8T1fkyTXAlVKEWTgo6jFKOgRDSdSaevtlrwBj lFjJoK+UbFn+ZX4f+uxsRU52/jSx5vMI5LXau X-Gm-Gg: AZuq6aJl1t/+FBb61fzlT462z5Kb8QeIqV8Afi2hgwjo/Vcu1r4HD1PRk8viuJR3UaV L81+Hz8QZZUEsgns9s0/oKWkI2tUQXa8GE1YxBdA6Ick5l5qqronE0LsOExn2tNtKaC+Y0Dbh3H VMaN5bsF2hRdT1UuFNbfr+EBRAeCjtb9uOfJStGNfWohvBap5fAR7Ihp0TEyUEMB86DpMCVaBdN OXWSvXcwL6F1N/IBWQf/U505YiEvGlhSFg/H58LuEWZNK1qBj43B/nhWVL1kO4zQvZOcV6VO6X5 l39qxOO/D/Z1D7jh2QsppuR38tyzQAvFL2/YTUgjYS/ZOltV+Z0iEIBzi4JrH5c= X-Received: by 2002:a05:6102:1624:b0:5ee:a0e6:a9f4 with SMTP id ada2fe7eead31-5fe2ad95adamr1246909137.12.1771088930962; Sat, 14 Feb 2026 09:08:50 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> In-Reply-To: <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sat, 14 Feb 2026 12:08:39 -0500 X-Gm-Features: AaiRm51fMVT8ubzOthenMoQ56bGEB9jgFjFYaUxg-GtYISNjtG3ddD0cbT7ejxQ Message-ID: <CAN+1HborUh_87WeR4Gzi0d3cF_hcuUpgV6ADkyzoqq7rsGmMTw@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Juri Linkov <juri@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000989f82064acbc6e6" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: Stefan Monnier <monnier@HIDDEN>, 80283 <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: 0.0 (/) --000000000000989f82064acbc6e6 Content-Type: multipart/alternative; boundary="000000000000989f81064acbc6e4" --000000000000989f81064acbc6e4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Feb 3, 2026 at 12:22=E2=80=AFPM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > On Mon, Feb 2, 2026 at 2:40=E2=80=AFAM Juri Linkov <juri@HIDDEN> wrot= e: > >> > Try the attached patch. >> > >> > This one. I renamed format to suffix-format to be more precise. >> >> Thanks, this works nicely with your patch: >> > > Attached, enhanced with a partial idea from Monnier. > Here's the latest patch which includes the function 'uniquify-conflicting-alist-keys' and tests for it. That function was discussed in another thread with Stefan. We need these to start various 'completing-read' improvements in cases where duplicate keys make completions imprecise. -St=C3=A9phane --000000000000989f81064acbc6e4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Tue, Feb 3, 2026 at 12:22=E2=80=AFPM St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>= </div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style= =3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-= serif">On Mon, Feb 2, 2026 at 2:40=E2=80=AFAM Juri Linkov <<a href=3D"ma= ilto:juri@HIDDEN" target=3D"_blank">juri@HIDDEN</a>> wrote:</spa= n></div></div><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" = style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pa= dding-left:1ex">>=C2=A0 =C2=A0 =C2=A0Try the attached patch.<br> ><br> > This one.=C2=A0 I renamed format to suffix-format to be more precise.<= br> <br> Thanks, this works nicely with your patch:<br></blockquote><div><br></div><= div style=3D"font-family:monospace">Attached,=C2=A0enhanced with a partial = idea from Monnier.</div></div></div></blockquote><div><br></div><div class= =3D"gmail_default" style=3D"font-family:monospace">Here's the latest pa= tch which includes the function 'uniquify-conflicting-alist-keys' a= nd tests for it.=C2=A0 That function was discussed in another thread with S= tefan.</div><div class=3D"gmail_default" style=3D"font-family:monospace"><b= r></div><div class=3D"gmail_default" style=3D"font-family:monospace">We nee= d these to start various 'completing-read' improvements in cases wh= ere duplicate keys make=C2=A0completions imprecise.</div><div class=3D"gmai= l_default" style=3D"font-family:monospace"><br></div><div class=3D"gmail_de= fault" style=3D"font-family:monospace">-St=C3=A9phane=C2=A0</div></div></di= v> --000000000000989f81064acbc6e4-- --000000000000989f82064acbc6e6 Content-Type: application/octet-stream; name="0001-Add-several-uniquify-string-list-and-alist-functions.patch" Content-Disposition: attachment; filename="0001-Add-several-uniquify-string-list-and-alist-functions.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mlmklm4b0> X-Attachment-Id: f_mlmklm4b0 RnJvbSBmNzk0YjdlMDc4M2NlMzg0NzJhNzFmZWU4NjhiMmVlOWEzODE0ZjAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjkgSmFuIDIwMjYgMTM6MDg6MTQgLTA1MDAK U3ViamVjdDogW1BBVENIXSBBZGQgc2V2ZXJhbCAidW5pcXVpZnkiIHN0cmluZyBsaXN0IGFuZCBh bGlzdCBmdW5jdGlvbnMKIChidWcjODAyODMpCgpUaGUgZnVuY3Rpb25zIGFyZSAndW5pcXVpZnkt c3RyaW5ncycsICd1bmlxdWlmeS1hbGlzdC1rZXlzJywKJ3VuaXF1aWZ5LWNvbmZsaWN0aW5nLWFs aXN0LWtleXMnLiAgVGhleSBjYW4gYmUgdXNlZCwgZm9yCmV4YW1wbGUsIHRvIG1ha2UgZHVwbGlj YXRlICdjb21wbGV0aW5nLXJlYWQnIGNhbmRpZGF0ZXMgdW5pcXVlLgoKKiBsaXNwL2VtYWNzLWxp c3Avc3Vici14LmVsICh1bmlxdWlmeS1zdHJpbmdzKQoodW5pcXVpZnktYWxpc3Qta2V5cywgdW5p cXVpZnktY29uZmxpY3RpbmctYWxpc3Qta2V5cyk6IE5ldwpkZWZ1bnMuCiogdGVzdC9saXNwL21p c2MtdGVzdHMuZWwgKG1pc2MtdGVzdC11bmlxdWlmeS1zdHJpbmdzKQoobWlzYy10ZXN0LXVuaXF1 aWZ5LWFsaXN0LWtleXMpOiBOZXcgdGVzdHMuCiogZXRjL05FV1M6IEFubm91bmNlIHRoZSBuZXcg ZnVuY3Rpb25zLgotLS0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgICAgfCAxMyArKysrKysKIGxp c3AvZW1hY3MtbGlzcC9zdWJyLXguZWwgfCA5NyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIHRlc3QvbGlzcC9taXNjLXRlc3RzLmVsICAgfCA2MiArKysrKysrKysrKysr KysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE3MiBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCA5ZDM2ZjZjM2Q5Ni4uNTcwMjJjNzg3NzQg MTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBAIC0zMDg4LDYgKzMwODgsMTkg QEAgZGV0ZXJtaW5lZCBieSB0aGUgbmV3IHVzZXIgb3B0aW9uICdwdWxzZS1mYWNlLWR1cmF0aW9u Jy4KIAogKiogTWlzY2VsbGFuZW91cwogCistLS0KKyoqKiBOZXcgZnVuY3Rpb25zICd1bmlxdWlm eS1zdHJpbmdzJywgJ3VuaXF1aWZ5LWFsaXN0LWtleXMnLCAndW5pcXVpZnktY29uZmxpY3Rpbmct YWxpc3Qta2V5cycuCitUaGVzZSBmdW5jdGlvbnMgYXJlIHNpbWlsYXIgdG8gJ2dlbmVyYXRlLW5l dy1idWZmZXItbmFtZScuCisndW5pcXVpZnktc3RyaW5ncycgcmV0dXJucyBhIGNvcHkgb2YgYSBz dHJpbmcgbGlzdCB3aXRoICI8TlVNQkVSPiIKK2FwcGVuZGVkIHRvIGR1cGxpY2F0ZXMuICAndW5p cXVpZnktYWxpc3Qta2V5cycgcmV0dXJucyBhIGNvcHkgb2YgYW4KK2FsaXN0IHdpdGggIjxOVU1C RVI+IiBhcHBlbmRlZCB0byBpdHMgZHVwbGljYXRlIGtleXMuICBBbGwgbm9uLXN0cmluZwora2V5 cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIHN0cmluZ3MuICBCb3RoIGZ1bmN0aW9ucyBhY2NlcHQg YW4gb3B0aW9uYWwKK3N1ZmZpeCBmb3JtYXQgc3RyaW5nIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0 ICI8TlVNQkVSPiIsIGZvciBleGFtcGxlCit3aXRoICIoTlVNQkVSKSIsIG9yIGEgZnVuY3Rpb24g d2hpY2ggaXMgcGFzc2VkIHRoZSBlbGVtZW50IHRvIHVuaXF1aWZ5CithbmQgdGhlIGluY3JlbWVu dGluZyBjb3VudC4gICd1bmlxdWlmeS1jb25mbGljdGluZy1hbGlzdC1rZXlzJyBhY2NlcHRzIGEK K2Z1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggYmF0Y2ggb2YgY29uZmxpY3Rpbmcga2V5cyBmb3Ig bW9yZQorZG9tYWluLXNwZWNpZmljIGNvbnRyb2wgb3ZlciBrZXkgcmVwbGFjZW1lbnRzLgorCiAt LS0KICoqKiBUaGUgZmlyc3QgY2xpZW50IGZyYW1lIG5vdyBzaG93cyB3YXJuaW5ncyBmcm9tIGRh ZW1vbiBzdGFydHVwLgogV2hlbiB0aGVyZSBhcmUgd2FybmluZ3MgZW1pdHRlZCBkdXJpbmcgRW1h Y3Mgc3RhcnR1cCwgdXN1YWxseSBkdWUgdG8KZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9z dWJyLXguZWwgYi9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVsCmluZGV4IDhkMDQ5NTg0ODdmLi43 MDkwMGViMzQ4MyAxMDA2NDQKLS0tIGEvbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbAorKysgYi9s aXNwL2VtYWNzLWxpc3Avc3Vici14LmVsCkBAIC01ODUsNiArNTg1LDEwMyBAQCBlbWFjcy1ldGMt LWhpZGUtbG9jYWwtdmFyaWFibGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAo Zm9yd2FyZC1saW5lIC0xKSAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50 LW1heCkpKSkpCiAKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4gdW5pcXVpZnktc3RyaW5ncyAoc3Ry aW5ncyAmb3B0aW9uYWwgc3VmZml4LWZvcm1hdCkKKyAgIlJldHVybiBhIGNvcHkgb2YgU1RSSU5H UyB3aXRoIFwiPE5VTUJFUj5cIiBhcHBlbmRlZCB0byBkdXBsaWNhdGVzLgorU1RSSU5HUyBzaG91 bGQgYmUgYSBsaXN0IGFuZCBtYXkgaGF2ZSB0ZXh0IHByb3BlcnRpZXMgd2hpY2ggcmVtYWluCitp bnRhY3QuCisKK05VTUJFUiBpcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBpbnRlZ2VyIHN0 YXJ0aW5nIGF0IDIgZm9yIHRoZSBmaXJzdAorZHVwbGljYXRlLgorCitJZiBTVUZGSVgtRk9STUFU IGlzIG5vbi1uaWwsIGl0IGlzIGEgdmFsaWQgZm9ybWF0LWNvbnRyb2wgc3RyaW5nIHBhc3NlZAor dG8gdGhlIGZ1bmN0aW9uIGBmb3JtYXQnLCBhbmQgY29udGFpbmluZyBhIHNpbmdsZSBlbWJlZGRl ZCBcIiVkXCIuICBJdAorZGVmYXVsdHMgdG8gXCI8JWQ+XCIuICBJZiBTVUZGSVgtRk9STUFUIGlz IGEgZnVuY3Rpb24sIGNhbGwgaXQgd2l0aCB0d28KK2FyZ3VtZW50czogdGhlIHN0cmluZyB0byB1 bmlxdWlmeSwgdGhlIGluY3JlbWVudGluZyBjb3VudC4gIEl0IHNob3VsZAorcmV0dXJuIGEgc3Ry aW5nLgorCitUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gYGdlbmVyYXRlLW5ldy1idWZmZXIt bmFtZScgYnV0IGZvciBzdHJpbmcKK2xpc3RzLiIKKyAgKGxldCAoKHVuaXF1ZXMpCisgICAgICAg IChodCAobWFrZS1oYXNoLXRhYmxlIDpzaXplIChsZW5ndGggc3RyaW5ncykgOnRlc3QgIydlcXVh bCkpKQorICAgIChkb2xpc3QgKHN0cmluZyBzdHJpbmdzKQorICAgICAgKGxldCogKCh1bmlxdWUt a2V5IHN0cmluZykgOyBMZWF2ZSBwcm9wZXJ0aWVzIGludGFjdC4KKyAgICAgICAgICAgICAoa2V5 IChzdWJzdHJpbmctbm8tcHJvcGVydGllcyBzdHJpbmcpKQorICAgICAgICAgICAgIChjb3VudCAo Z2V0aGFzaCBrZXkgaHQpKSkKKyAgICAgICAgKHdoZW4gY291bnQKKyAgICAgICAgICAoc2V0cSBj b3VudCAoMSsgY291bnQpKQorICAgICAgICAgIChzZXRxIHVuaXF1ZS1rZXkgKGlmIChmdW5jdGlv bnAgc3VmZml4LWZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs bCBzdWZmaXgtZm9ybWF0IHVuaXF1ZS1rZXkgY291bnQpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChmb3JtYXQgKGNvbmNhdCAiJXMiIChvciBzdWZmaXgtZm9ybWF0ICI8JWQ+IikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlLWtleSBjb3VudCkpKSkK KyAgICAgICAgKHB1c2ggdW5pcXVlLWtleSB1bmlxdWVzKQorICAgICAgICAocHV0aGFzaCBrZXkg KG9yIGNvdW50IDEpIGh0KSkpCisgICAgKG5yZXZlcnNlIHVuaXF1ZXMpKSkKKworOzs7IyMjYXV0 b2xvYWQKKyhkZWZ1biB1bmlxdWlmeS1hbGlzdC1rZXlzIChhbGlzdCAmb3B0aW9uYWwgc3VmZml4 LWZvcm1hdCkKKyAgIlJldHVybiBhIGNvcHkgb2YgQUxJU1Qgd2l0aCBcIjxOVU1CRVI+XCIgYXBw ZW5kZWQgdG8gZHVwbGljYXRlIGtleXMuCitBTElTVCBrZXlzIHNob3VsZCBiZSBzdHJpbmdzIGFu ZCBtYXkgaGF2ZSB0ZXh0IHByb3BlcnRpZXMgd2hpY2ggcmVtYWluCitpbnRhY3QuICBOb24tc3Ry aW5nIGtleXMgYXJlIGNvbnZlcnRlZCB0byBzdHJpbmdzLgorCitOVU1CRVIgaXMgYSBtb25vdG9u aWNhbGx5IGluY3JlYXNpbmcgaW50ZWdlciBzdGFydGluZyBhdCAyIGZvciB0aGUgZmlyc3QKK2R1 cGxpY2F0ZS4KKworSWYgU1VGRklYLUZPUk1BVCBpcyBub24tbmlsLCBpdCBpcyBhIHZhbGlkIGZv cm1hdC1jb250cm9sIHN0cmluZyBwYXNzZWQKK3RvIHRoZSBmdW5jdGlvbiBgZm9ybWF0JywgYW5k IGNvbnRhaW5pbmcgYSBzaW5nbGUgZW1iZWRkZWQgXCIlZFwiLiAgSXQKK2RlZmF1bHRzIHRvIFwi PCVkPlwiLiAgSWYgU1VGRklYLUZPUk1BVCBpcyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggdHdv Cithcmd1bWVudHM6IHRoZSBhbGlzdCBlbGVtZW50IHRvIHVuaXF1aWZ5LCB0aGUgaW5jcmVtZW50 aW5nIGNvdW50LiAgSXQKK3Nob3VsZCByZXR1cm4gYSBzdHJpbmcuCisKK1RoaXMgZnVuY3Rpb24g aXMgc2ltaWxhciB0byBgZ2VuZXJhdGUtbmV3LWJ1ZmZlci1uYW1lJyBidXQgZm9yIGFsaXN0cy4i CisgIChsZXQgKCh1bmlxdWVzKQorICAgICAgICAoaHQgKG1ha2UtaGFzaC10YWJsZSA6c2l6ZSAo bGVuZ3RoIGFsaXN0KSA6dGVzdCAjJ2VxdWFsKSkpCisgICAgKGRvbGlzdCAoZWx0IGFsaXN0KQor ICAgICAgKGxldCogKChrZXkgKGNhciBlbHQpKQorICAgICAgICAgICAgIChrZXkgKGlmIChzdHJp bmdwIGtleSkga2V5IChmb3JtYXQgIiVTIiBrZXkpKSkKKyAgICAgICAgICAgICAodW5pcXVlLWtl eSBrZXkpIDsgTGVhdmUgcHJvcGVydGllcyBpbnRhY3QuCisgICAgICAgICAgICAgKGtleSAoc3Vi c3RyaW5nLW5vLXByb3BlcnRpZXMga2V5KSkKKyAgICAgICAgICAgICAoY291bnQgKGdldGhhc2gg a2V5IGh0KSkpCisgICAgICAgICh3aGVuIGNvdW50CisgICAgICAgICAgKHNldHEgY291bnQgKDEr IGNvdW50KSkKKyAgICAgICAgICAoc2V0cSB1bmlxdWUta2V5IChpZiAoZnVuY3Rpb25wIHN1ZmZp eC1mb3JtYXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgc3VmZml4 LWZvcm1hdCBlbHQgY291bnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQg KGNvbmNhdCAiJXMiIChvciBzdWZmaXgtZm9ybWF0ICI8JWQ+IikpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5pcXVlLWtleSBjb3VudCkpKSkKKyAgICAgICAgKHB1c2gg KGNvbnMgdW5pcXVlLWtleSAoY2RyIGVsdCkpIHVuaXF1ZXMpCisgICAgICAgIChwdXRoYXNoIGtl eSAob3IgY291bnQgMSkgaHQpKSkKKyAgICAobnJldmVyc2UgdW5pcXVlcykpKQorCisoZGVmdW4g dW5pcXVpZnktY29uZmxpY3RpbmctYWxpc3Qta2V5cyAoYWxpc3QgaGFuZGxlcikKKyAgIlJldHVy biBhIGNvcHkgb2YgQUxJU1Qgd2l0aCBpdHMga2V5cyBtYWRlIHVuaXF1ZSBieSBIQU5ETEVSLgor QUxJU1Qga2V5cyBzaG91bGQgYmUgc3RyaW5ncyBhbmQgbWF5IGhhdmUgdGV4dCBwcm9wZXJ0aWVz IHdoaWNoIHJlbWFpbgoraW50YWN0LiAgTm9uLXN0cmluZyBrZXlzIGFyZSBjb252ZXJ0ZWQgdG8g c3RyaW5ncy4KKworSEFORExFUiBpcyBhIGZ1bmN0aW9uIHdoaWNoIGlzIHBhc3NlZCBhbiBhbGlz dCwgZXhjZXJwdGVkIGZyb20gQUxJU1QsCit3aXRoIGlkZW50aWNhbCwgY29uZmxpY3Rpbmcga2V5 cywgb25lIHNldCBvZiBjb25mbGljdHMgYXQgYSB0aW1lLgorSEFORExFUiBzaG91bGQgcmV0dXJu IHRoZSBwYXNzd2QgYWxpc3Qgd2l0aCBpdHMga2V5cyBhZGp1c3RlZCBmb3IKK2R1cGxpY2F0ZXMu ICBJdCBpcyBjdXN0b21hcnkgdG8gcmV0dXJuIHRoZSBhbGlzdCBpbiB0aGUgc2FtZSBvcmRlciBh cword2hlbiBwYXNzZWQuICBObyB2ZXJpZmljYXRpb24gaXMgZG9uZSB0byBlbnN1cmUgdW5pcXVl bmVzcy4iCisgIChsZXQgKCh1bmlxdWVzKQorICAgICAgICAoaHQgKG1ha2UtaGFzaC10YWJsZSA6 c2l6ZSAobGVuZ3RoIGFsaXN0KSA6dGVzdCAjJ2VxdWFsKSkpCisgICAgKGRvbGlzdCAoZWx0IGFs aXN0KQorICAgICAgKGxldCogKChrZXkgKGNhciBlbHQpKQorICAgICAgICAgICAgIChrZXkgKGlm IChzdHJpbmdwIGtleSkga2V5IChmb3JtYXQgIiVTIiBrZXkpKSkKKyAgICAgICAgICAgICAodW5p cXVlLWtleSBrZXkpIDsgTGVhdmUgcHJvcGVydGllcyBpbnRhY3QuCisgICAgICAgICAgICAgKGtl eSAoc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMga2V5KSkpCisgICAgICAgIChpZi1sZXQqICgoZW50 cnkgKGdldGhhc2gga2V5IGh0KSkpCisgICAgICAgICAgICAocHV0aGFzaCBrZXkgKGNvbnMgZWx0 IGVudHJ5KSBodCkKKyAgICAgICAgICAocHV0aGFzaCBrZXkgKGxpc3QgZWx0KSBodCkpKSkKKyAg ICAobWFwaGFzaCAobGFtYmRhIChrZXkgY29uZmxpY3RzKQorICAgICAgICAgICAgICAgKHNldHEg dW5pcXVlcworICAgICAgICAgICAgICAgICAgICAgKG5jb25jCisgICAgICAgICAgICAgICAgICAg ICAgKGlmIChlcSAxIChsZW5ndGggY29uZmxpY3RzKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uZmxpY3RzCisgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBoYW5kbGVyIGNv bmZsaWN0cykpCisgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlcykpKQorICAgICAgICAgICAg IGh0KQorICAgIChucmV2ZXJzZSB1bmlxdWVzKSkpCisKIChwcm92aWRlICdzdWJyLXgpCiAKIDs7 OyBzdWJyLXguZWwgZW5kcyBoZXJlCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvbWlzYy10ZXN0cy5l bCBiL3Rlc3QvbGlzcC9taXNjLXRlc3RzLmVsCmluZGV4IGI2ZjVmMDFhZDJhLi5lODg1YWNiYjdm MSAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL21pc2MtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL21p c2MtdGVzdHMuZWwKQEAgLTI0Myw1ICsyNDMsNjcgQEAgbWlzYy10ZXN0LXN0cmluZy1waXhlbC13 aWR0aC1kaXNwbGF5LWxpbmUtbnVtYmVycwogICAgICAgKHNldHEtZGVmYXVsdCBkaXNwbGF5LWxp bmUtbnVtYmVycyBkbG4pKQogICAgIChzaG91bGQgKD0gdzAgdzEpKSkpCiAKKyhlcnQtZGVmdGVz dCBtaXNjLXRlc3QtdW5pcXVpZnktc3RyaW5ncyAoKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVp Znktc3RyaW5ncworICAgICAgICAgICAgICAgICAgJygpKQorICAgICAgICAgICAgICAgICAnKCkp KQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktc3RyaW5ncworICAgICAgICAgICAgICAgICAg JygiYSIgImIiICJjIiAiZCIgImUiKSkKKyAgICAgICAgICAgICAgICAgICcoImEiICJiIiAiYyIg ImQiICJlIikpKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktc3RyaW5ncworICAgICAgICAg ICAgICAgICAgJygiYSIgImEiICJiIiAiYyIgImQiICJkIiAiZCIgImUiKSkKKyAgICAgICAgICAg ICAgICAgJygiYSIgImE8Mj4iICJiIiAiYyIgImQiICJkPDI+IiAiZDwzPiIgImUiKSkpCisgIChz aG91bGQgKGVxdWFsICh1bmlxdWlmeS1zdHJpbmdzCisgICAgICAgICAgICAgICAgICAnKCJhIiAi YSIgImIiICJjIiAiZCIgImQiICJkIiAiZSIpCisgICAgICAgICAgICAgICAgICAiKCVkKSIpCisg ICAgICAgICAgICAgICAgICcoImEiICJhKDIpIiAiYiIgImMiICJkIiAiZCgyKSIgImQoMykiICJl IikpKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktc3RyaW5ncworICAgICAgICAgICAgICAg ICAgJygiYSIgImEiICJiIiAiYyIgImQiICJkIiAiZCIgImUiKQorICAgICAgICAgICAgICAgICAg KGxhbWJkYSAoc3RyaW5nIGNvdW50KSAoZm9ybWF0ICIlc1slZF0iIHN0cmluZyBjb3VudCkpKQor ICAgICAgICAgICAgICAgICAnKCJhIiAiYVsyXSIgImIiICJjIiAiZCIgImRbMl0iICJkWzNdIiAi ZSIpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHVuaXF1aWZ5LXN0cmluZ3MKKyAgICAgICAgICAgICAg ICAgIGAoLChwcm9wZXJ0aXplICJhIiAnaWQgMSkgLChwcm9wZXJ0aXplICJhIiAnaWQgMikgImEi CisgICAgICAgICAgICAgICAgICAgICJiIiAiYyIgImQiICJkIiAiZCIgImUiKSkKKyAgICAgICAg ICAgICAgICAgYCgsKHByb3BlcnRpemUgImEiICdpZCAxKSAsKHByb3BlcnRpemUgImE8Mj4iICdp ZCAyKSAiYTwzPiIKKyAgICAgICAgICAgICAgICAgICAiYiIgImMiICJkIiAiZDwyPiIgImQ8Mz4i ICJlIikpKSkKKworKGVydC1kZWZ0ZXN0IG1pc2MtdGVzdC11bmlxdWlmeS1hbGlzdC1rZXlzICgp CisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAg ICAnKCkpCisgICAgICAgICAgICAgICAgICcoKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlm eS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImIiICJCIikgKCJj IiAiQyIpICgiZCIgIkQiKSAoImUiICJFIikpKQorICAgICAgICAgICAgICAgICAnKCgiYSIgIkEi KSAoImIiICJCIikgKCJjIiAiQyIpICgiZCIgIkQiKSAoImUiICJFIikpKSkKKyAgKHNob3VsZCAo ZXF1YWwgKHVuaXF1aWZ5LWFsaXN0LWtleXMKKyAgICAgICAgICAgICAgICAgICcoKCJhIiAiQSIp ICgiYSIgIkEyIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkIiAiRDIiKSAoImQi ICJEMyIpICgiZSIgIkUiKSkpCisgICAgICAgICAgICAgICAgICcoKCJhIiAiQSIpICgiYTwyPiIg IkEyIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkPDI+IiAiRDIiKSAoImQ8Mz4i ICJEMyIpICgiZSIgIkUiKSkpKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktYWxpc3Qta2V5 cworICAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhIiAiQTIiKSAoImIiICJCIikgKCJj IiAiQyIpICgiZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKQorICAgICAg ICAgICAgICAgICAgIiglZCkiKQorICAgICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImEoMiki ICJBMiIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCgyKSIgIkQyIikgKCJkKDMp IiAiRDMiKSAoImUiICJFIikpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHVuaXF1aWZ5LWFsaXN0LWtl eXMKKyAgICAgICAgICAgICAgICAgICcoKCJhIiAiQSIpICgiYSIgIkEyIikgKCJiIiAiQiIpICgi YyIgIkMiKSAoImQiICJEIikgKCJkIiAiRDIiKSAoImQiICJEMyIpICgiZSIgIkUiKSkKKyAgICAg ICAgICAgICAgICAgIChsYW1iZGEgKGVsdCBjb3VudCkgKGZvcm1hdCAiJXNbJWRdIiAoY2FyIGVs dCkgY291bnQpKSkKKyAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhWzJdIiAiQTIiKSAo ImIiICJCIikgKCJjIiAiQyIpICgiZCIgIkQiKSAoImRbMl0iICJEMiIpICgiZFszXSIgIkQzIikg KCJlIiAiRSIpKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAg ICAgICAgICAgICAgICBgKCgsKHByb3BlcnRpemUgImEiICdpZCAxKSAiQSIpICgsKHByb3BlcnRp emUgImEiICdpZCAyKSAiQTIiKQorICAgICAgICAgICAgICAgICAgICAoImIiICJCIikgKCJjIiAi QyIpICgiZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKSkKKyAgICAgICAg ICAgICAgICAgYCgoLChwcm9wZXJ0aXplICJhIiAnaWQgMSkgIkEiKSAoLChwcm9wZXJ0aXplICJh PDI+IiAnaWQgMikgIkEyIikKKyAgICAgICAgICAgICAgICAgICAoImIiICJCIikgKCJjIiAiQyIp ICgiZCIgIkQiKSAoImQ8Mj4iICJEMiIpICgiZDwzPiIgIkQzIikgKCJlIiAiRSIpKSkpCisgIChz aG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAgICAnKCgx ICJBIikgKDEgIkEyIikgKDIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCIgIkQyIikgKCJk IiAiRDMiKSAoImUiICJFIikpKQorICAgICAgICAgICAgICAgICAnKCgiMSIgIkEiKSAoIjE8Mj4i ICJBMiIpICgiMiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZDwyPiIgIkQyIikgKCJkPDM+ IiAiRDMiKSAoImUiICJFIikpKSkpCisKKyhlcnQtZGVmdGVzdCBtaXNjLXRlc3QtdW5pcXVpZnkt Y29uZmxpY3RpbmctYWxpc3Qta2V5cyAoKQorICAoc2hvdWxkIChlcXVhbCAobGV0ICgoY291bnQg MSkpCisgICAgICAgICAgICAgICAgICAgKHVuaXF1aWZ5LWNvbmZsaWN0aW5nLWFsaXN0LWtleXMK KyAgICAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhIiAiQTIiKSAoImIiICJCIikgKCJj IiAiQyIpICgiZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKQorICAgICAg ICAgICAgICAgICAgICAobGFtYmRhIChhbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgICAobGV0 ICgodW5pcXVlcykpCisgICAgICAgICAgICAgICAgICAgICAgICAoZG9saXN0IChlbHQgYWxpc3Qp CisgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChjb25zIChmb3JtYXQgIiVzJWQiIChj YXIgZWx0KSAoc2V0cSBjb3VudCAoMSsgY291bnQpKSkgKGNkciBlbHQpKSB1bmlxdWVzKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIChucmV2ZXJzZSB1bmlxdWVzKSkpKSkKKyAgICAgICAgICAg ICAgICAgJygoImEzIiAiQSIpICgiYTIiICJBMiIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkNiIg IkQiKSAoImQ1IiAiRDIiKSAoImQ0IiAiRDMiKSAoImUiICJFIikpKSkpCisKIChwcm92aWRlICdt aXNjLXRlc3RzKQogOzs7IG1pc2MtdGVzdHMuZWwgZW5kcyBoZXJlCi0tIAoyLjUyLjAKCg== --000000000000989f82064acbc6e6--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 3 Feb 2026 17:23:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 03 12:23:13 2026 Received: from localhost ([127.0.0.1]:49356 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vnK7M-0008Ri-PL for submit <at> debbugs.gnu.org; Tue, 03 Feb 2026 12:23:13 -0500 Received: from mail-ua1-x929.google.com ([2607:f8b0:4864:20::929]:48344) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vnK7L-0008Ra-8h for 80283 <at> debbugs.gnu.org; Tue, 03 Feb 2026 12:23:11 -0500 Received: by mail-ua1-x929.google.com with SMTP id a1e0cc1a2514c-948ccec7c89so530464241.0 for <80283 <at> debbugs.gnu.org>; Tue, 03 Feb 2026 09:23:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770139390; cv=none; d=google.com; s=arc-20240605; b=RGEws2cOmjNPmYOBFYfRcaM1yN6RtyB+INkwz8c7x+IB0gr75jS3o0KkoRomE/zTun il90GpLxXc1pWmqFMl3NTXbqej4x4BfUOTIGsYlMPAbO/5r+jwhg7Jxqy0ebqQ0kaF4M vY5MRZZxkIMI9SoEBUTp6+GNidNJQFvfi5QyUvYGEjQIf5qnVvf3ud/sGFX8Bf56a6YL pZMT/fzkFJHnxrwNSpI4O4D53CkYANNxrpRSho3GQ7H/zmNDpLpSiUTtEkaMvLR8gPZg CN5GlNVKp0gYMhuUId6kHUkpSAMIjWo1mhxRg0kNtNqnHq/nSgSD/xE86RGsRYrSUHjn F4nA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=IdFCuNNVzxx+6waOiLMfq4tN+CZ/+0KrNUMU4d5koik=; fh=YDUMVpC2/rm0VkTytaZ4krjb3bffP7Zzww8IypRgzmk=; b=CzQi+QIi8Gw94O1qoCUD2fs0MOWZej7mYndnRYcoJ52jUE+3k3cJS037w/6gmp6DM7 DS4cs8IyDnqJqjUJXSZ5eFPlTFCKKaYwxb8w7gmaMEewlI7Nkh3xzQxCyQx6ycj2LSy4 UYhGO5e41AcNMWKSOSBMkceOWvLzhm7u77siPpk2lCQwdcRlqj+uB1a+e4HrjBw2TZ9t MnrGxaZvbqKNmaxdNsLOPDMjnwtn7D3mHA50Gs2+oI5SabMn7btKU1qf/kWT6BCBA70/ qB+UFzVb7zDt9sgdkDm2VMCtNPFNYqSTxnBwa03/ZLphfL/Y2d5ARyFu4gzrWJsc5CRd 98xA==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770139390; x=1770744190; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=IdFCuNNVzxx+6waOiLMfq4tN+CZ/+0KrNUMU4d5koik=; b=AV2kmdkFyDm/wcvsQB4E2IX4PmkfgQfpqNHO6E2CBMz0Q0VcZe6qy6OoiXvt1uhBSX +E2ujpZYLAGo+PR7ANgGwwmTnJkd+17sRfkKU7xiIEtwB0dsvXkKO0mbdWppFfSeltph mIeJ8Gc+D/q3YEYkV3MCuu34T6LisG00T1j5nDUTyX5LNG85YNoUlC30TUTm1LWfauhz yp8aIhEXNcMCd0kAuCvQ9fPykMkGGEkVi9Yx+z1Zam7/gVkXBBFt8x5m61dPFq0/pD6O U3dDyivfG3O0mVtU5q3xsnS+XBpTZQs1Q+uYbQ6xA3/zap0JKqXHAJlX5WeoGRi9nhMO wATw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770139390; x=1770744190; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=IdFCuNNVzxx+6waOiLMfq4tN+CZ/+0KrNUMU4d5koik=; b=Eeu9luL9OAi8IUIP7bukadwoIPpgChDWlCcdgID0XIkaDar30kffTgchcD8Mf31LHM /9W7ZD0RwUjyiKZAGFdUrXebAxSn7RbRPnbob+W7DLBKm+znkuuJaX6Q1IxnQTYJh9dB QORS2U30YZByNKR2mSse1K8l2xBwatXI8+z1X4BMR7qoNCKOS0wH3xmGNoPPQhnkqASY B0gN8kLWEIWjjyuv2w7Xp7qosLpydIpWXEdC6l/sm815SjQWnyUH04SAMUSgz2LE/8eN a7uHvDcuaFmiGc8UC9SaXnFRwKZvTckZTo/A7LYX2Ht5iweucPyNY1TPTjIlXP8FI+II i0Zw== X-Gm-Message-State: AOJu0YwP+JLDtZ/ODGSPWscYh+S4tCDjLcRIaeTtZcl5FiDYYk9Nb9is /pQesXdlCNC2PWmUhu0BSY108Mli4uL1ujSzUac65Svh5wvSZ0/x6jITGorxNid1+01+m1FjG1L 9GFNdmdM3vdp461C2OdlimcGQTmc4pYP92A== X-Gm-Gg: AZuq6aKHMoVGDJ6wmdpKb3/NAcgJoqiJHrhDZwsI6luw/Rau41jQ0Mf8NisvtMgK4YG stdBAXIrbhwaKHNmpZFM+5RBoaFbBY2sQEsfhy9kQzW/9XK6ugA/RR+/zpVo+iUfNmyE8tfKZ17 O/uq+rl55Idgl37ao6cuebTfSBnfkfPfsdM8JI/5aGn61wRFlxEhOpC6//wgR8ISDZO8rI3vGud bUDd5WbqHaBl3lMDH0Dwg7To6PdcvZfZZ5djjGNnGTC8WC8cyvx9liYxjG9q81hpC81XfPs3Eo5 +XiEjGZs5Ja+td6sehn1GmcuAbqxkMVNIEmoBBQ7Q7db18RhdFc= X-Received: by 2002:a05:6102:e0d:b0:5ed:675:e355 with SMTP id ada2fe7eead31-5f9395bad90mr142575137.27.1770139390360; Tue, 03 Feb 2026 09:23:10 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> <877bsv61ix.fsf@HIDDEN> In-Reply-To: <877bsv61ix.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Tue, 3 Feb 2026 12:22:57 -0500 X-Gm-Features: AZwV_Qha0lO5DURv9I1JJep4OtYO3m34JjPi5oP3dUKISQUloSY1no4bW09o5Cw Message-ID: <CAN+1HboC40aSD3uQpMmx1ftbztdm4YFwEhL=xPr6XZ5KCb=n3g@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Juri Linkov <juri@HIDDEN> Content-Type: multipart/mixed; boundary="00000000000090e4620649eeb157" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: 80283 <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: 0.0 (/) --00000000000090e4620649eeb157 Content-Type: multipart/alternative; boundary="00000000000090e4610649eeb155" --00000000000090e4610649eeb155 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Feb 2, 2026 at 2:40=E2=80=AFAM Juri Linkov <juri@HIDDEN> wrote: > > Try the attached patch. > > > > This one. I renamed format to suffix-format to be more precise. > > Thanks, this works nicely with your patch: > Attached, enhanced with a partial idea from Monnier. --00000000000090e4610649eeb155 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Mon, Feb 2, 2026 at 2:40=E2=80=AFAM Juri Linkov <<a href=3D"mailto:ju= ri@HIDDEN">juri@HIDDEN</a>> wrote:</span></div></div><div class= =3D"gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" st= yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd= ing-left:1ex">>=C2=A0 =C2=A0 =C2=A0Try the attached patch.<br> ><br> > This one.=C2=A0 I renamed format to suffix-format to be more precise.<= br> <br> Thanks, this works nicely with your patch:<br></blockquote><div><br></div><= div class=3D"gmail_default" style=3D"font-family:monospace">Attached,=C2=A0= enhanced with a partial idea from Monnier.</div></div></div> --00000000000090e4610649eeb155-- --00000000000090e4620649eeb157 Content-Type: application/octet-stream; name="0001-Add-functions-uniquify-strings-and-uniquify-alist-ke.patch" Content-Disposition: attachment; filename="0001-Add-functions-uniquify-strings-and-uniquify-alist-ke.patch" Content-Transfer-Encoding: base64 Content-ID: <f_ml6va39u0> X-Attachment-Id: f_ml6va39u0 RnJvbSBkNzRlMzI1MTIzNzZkYTJmMjNkY2NiZDY5MjAyNWZiYTlmMGVhNmFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjkgSmFuIDIwMjYgMTM6MDg6MTQgLTA1MDAK U3ViamVjdDogW1BBVENIXSBBZGQgZnVuY3Rpb25zIHVuaXF1aWZ5LXN0cmluZ3MgYW5kIHVuaXF1 aWZ5LWFsaXN0LWtleXMKIChidWcjODAyODMpCgoqIGxpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwg KHVuaXF1aWZ5LXN0cmluZ3MpOgoodW5pcXVpZnktYWxpc3Qta2V5cyk6IE5ldyBkZWZ1bnMuCiog dGVzdC9saXNwL21pc2MtdGVzdHMuZWwgKG1pc2MtdGVzdC11bmlxdWlmeS1zdHJpbmdzKToKKG1p c2MtdGVzdC11bmlxdWlmeS1hbGlzdC1rZXlzKTogTmV3IHRlc3RzLgoqIGV0Yy9ORVdTOiBBbm5v dW5jZSB0aGUgbmV3IGZ1bmN0aW9ucy4KLS0tCiBldGMvTkVXUyAgICAgICAgICAgICAgICAgIHwg MTEgKysrKysrKwogbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbCB8IDY3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdC9saXNwL21pc2MtdGVzdHMuZWwgICB8IDUx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEyOSBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCA5ZDM2ZjZj M2Q5Ni4uZmNjOGMwYTE0Y2IgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBA IC0zMDg4LDYgKzMwODgsMTcgQEAgZGV0ZXJtaW5lZCBieSB0aGUgbmV3IHVzZXIgb3B0aW9uICdw dWxzZS1mYWNlLWR1cmF0aW9uJy4KIAogKiogTWlzY2VsbGFuZW91cwogCistLS0KKyoqKiBOZXcg ZnVuY3Rpb25zICd1bmlxdWlmeS1zdHJpbmdzJyBhbmQgJ3VuaXF1aWZ5LWFsaXN0LWtleXMnLgor VGhlc2UgZnVuY3Rpb25zIGFyZSBzaW1pbGFyIHRvICdnZW5lcmF0ZS1uZXctYnVmZmVyLW5hbWUn LgorJ3VuaXF1aWZ5LXN0cmluZ3MnIHJldHVybnMgYSBjb3B5IG9mIGEgc3RyaW5nIGxpc3Qgd2l0 aCAiPE5VTUJFUj4iCithcHBlbmRlZCB0byBkdXBsaWNhdGVzLiAgJ3VuaXF1aWZ5LWFsaXN0LWtl eXMnIHJldHVybnMgYSBjb3B5IG9mIGFuCithbGlzdCB3aXRoICI8TlVNQkVSPiIgYXBwZW5kZWQg dG8gaXRzIGR1cGxpY2F0ZSBrZXlzLiAgQWxsIG5vbi1zdHJpbmcKK2tleXMgYXJlIGZpcnN0IGNv bnZlcnRlZCB0byBzdHJpbmdzLiAgQm90aCBmdW5jdGlvbnMgYWNjZXB0IGFuIG9wdGlvbmFsCitz dWZmaXggZm9ybWF0IHN0cmluZyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCAiPE5VTUJFUj4iLCBm b3IgZXhhbXBsZQord2l0aCAiKE5VTUJFUikiLCBvciBhIGZ1bmN0aW9uIHdoaWNoIGlzIHBhc3Nl ZCB0aGUgZWxlbWVudCB0byB1bmlxdWlmeQorYW5kIHRoZSBpbmNyZW1lbnRpbmcgY291bnQuCisK IC0tLQogKioqIFRoZSBmaXJzdCBjbGllbnQgZnJhbWUgbm93IHNob3dzIHdhcm5pbmdzIGZyb20g ZGFlbW9uIHN0YXJ0dXAuCiBXaGVuIHRoZXJlIGFyZSB3YXJuaW5ncyBlbWl0dGVkIGR1cmluZyBF bWFjcyBzdGFydHVwLCB1c3VhbGx5IGR1ZSB0bwpkaWZmIC0tZ2l0IGEvbGlzcC9lbWFjcy1saXNw L3N1YnIteC5lbCBiL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKaW5kZXggOGQwNDk1ODQ4N2Yu LmY0ZWM1NDBkOTI1IDEwMDY0NAotLS0gYS9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVsCisrKyBi L2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKQEAgLTU4NSw2ICs1ODUsNzMgQEAgZW1hY3MtZXRj LS1oaWRlLWxvY2FsLXZhcmlhYmxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24g KGZvcndhcmQtbGluZSAtMSkgKHBvaW50KSkKICAgICAgICAgICAgICAgICAgICAgICAgIChwb2lu dC1tYXgpKSkpKQogCis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIHVuaXF1aWZ5LXN0cmluZ3MgKHN0 cmluZ3MgJm9wdGlvbmFsIHN1ZmZpeC1mb3JtYXQpCisgICJSZXR1cm4gYSBjb3B5IG9mIFNUUklO R1Mgd2l0aCBcIjxOVU1CRVI+XCIgYXBwZW5kZWQgdG8gZHVwbGljYXRlcy4KK1NUUklOR1Mgc2hv dWxkIGJlIGEgbGlzdCBhbmQgbWF5IGhhdmUgdGV4dCBwcm9wZXJ0aWVzIHdoaWNoIHJlbWFpbgor aW50YWN0LgorCitOVU1CRVIgaXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW50ZWdlciBz dGFydGluZyBhdCAyIGZvciB0aGUgZmlyc3QKK2R1cGxpY2F0ZS4KKworSWYgU1VGRklYLUZPUk1B VCBpcyBub24tbmlsLCBpdCBpcyBhIHZhbGlkIGZvcm1hdC1jb250cm9sIHN0cmluZyBwYXNzZWQK K3RvIHRoZSBmdW5jdGlvbiBgZm9ybWF0JywgYW5kIGNvbnRhaW5pbmcgYSBzaW5nbGUgZW1iZWRk ZWQgXCIlZFwiLiAgSXQKK2RlZmF1bHRzIHRvIFwiPCVkPlwiLiAgSWYgU1VGRklYLUZPUk1BVCBp cyBhIGZ1bmN0aW9uLCBjYWxsIGl0IHdpdGggdHdvCithcmd1bWVudHM6IHRoZSBzdHJpbmcgdG8g dW5pcXVpZnksIHRoZSBpbmNyZW1lbnRpbmcgY291bnQuICBJdCBzaG91bGQKK3JldHVybiBhIHN0 cmluZy4KKworVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIGBnZW5lcmF0ZS1uZXctYnVmZmVy LW5hbWUnIGJ1dCBmb3Igc3RyaW5nCitsaXN0cy4iCisgIChsZXQgKCh1bmlxdWVzKQorICAgICAg ICAoaHQgKG1ha2UtaGFzaC10YWJsZSA6c2l6ZSAobGVuZ3RoIHN0cmluZ3MpIDp0ZXN0ICMnZXF1 YWwpKSkKKyAgICAoZG9saXN0IChzdHJpbmcgc3RyaW5ncykKKyAgICAgIChsZXQqICgodW5pcXVl LWtleSBzdHJpbmcpIDsgTGVhdmUgcHJvcGVydGllcyBpbnRhY3QuCisgICAgICAgICAgICAgKGtl eSAoc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgc3RyaW5nKSkKKyAgICAgICAgICAgICAoY291bnQg KGdldGhhc2gga2V5IGh0KSkpCisgICAgICAgICh3aGVuIGNvdW50CisgICAgICAgICAgKHNldHEg Y291bnQgKDErIGNvdW50KSkKKyAgICAgICAgICAoc2V0cSB1bmlxdWUta2V5IChpZiAoZnVuY3Rp b25wIHN1ZmZpeC1mb3JtYXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNh bGwgc3VmZml4LWZvcm1hdCB1bmlxdWUta2V5IGNvdW50KQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZm9ybWF0IChjb25jYXQgIiVzIiAob3Igc3VmZml4LWZvcm1hdCAiPCVkPiIpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZS1rZXkgY291bnQpKSkp CisgICAgICAgIChwdXNoIHVuaXF1ZS1rZXkgdW5pcXVlcykKKyAgICAgICAgKHB1dGhhc2gga2V5 IChvciBjb3VudCAxKSBodCkpKQorICAgIChucmV2ZXJzZSB1bmlxdWVzKSkpCisKKzs7OyMjI2F1 dG9sb2FkCisoZGVmdW4gdW5pcXVpZnktYWxpc3Qta2V5cyAoYWxpc3QgJm9wdGlvbmFsIHN1ZmZp eC1mb3JtYXQpCisgICJSZXR1cm4gYSBjb3B5IG9mIEFMSVNUIHdpdGggXCI8TlVNQkVSPlwiIGFw cGVuZGVkIHRvIGR1cGxpY2F0ZSBrZXlzLgorQUxJU1Qga2V5cyBzaG91bGQgYmUgc3RyaW5ncyBh bmQgbWF5IGhhdmUgdGV4dCBwcm9wZXJ0aWVzIHdoaWNoIHJlbWFpbgoraW50YWN0LiAgTm9uLXN0 cmluZyBrZXlzIGFyZSBjb252ZXJ0ZWQgdG8gc3RyaW5ncy4KKworTlVNQkVSIGlzIGEgbW9ub3Rv bmljYWxseSBpbmNyZWFzaW5nIGludGVnZXIgc3RhcnRpbmcgYXQgMiBmb3IgdGhlIGZpcnN0Citk dXBsaWNhdGUuCisKK0lmIFNVRkZJWC1GT1JNQVQgaXMgbm9uLW5pbCwgaXQgaXMgYSB2YWxpZCBm b3JtYXQtY29udHJvbCBzdHJpbmcgcGFzc2VkCit0byB0aGUgZnVuY3Rpb24gYGZvcm1hdCcsIGFu ZCBjb250YWluaW5nIGEgc2luZ2xlIGVtYmVkZGVkIFwiJWRcIi4gIEl0CitkZWZhdWx0cyB0byBc IjwlZD5cIi4gIElmIFNVRkZJWC1GT1JNQVQgaXMgYSBmdW5jdGlvbiwgY2FsbCBpdCB3aXRoIHR3 bworYXJndW1lbnRzOiB0aGUgYWxpc3QgZWxlbWVudCB0byB1bmlxdWlmeSwgdGhlIGluY3JlbWVu dGluZyBjb3VudC4gIEl0CitzaG91bGQgcmV0dXJuIGEgc3RyaW5nLgorCitUaGlzIGZ1bmN0aW9u IGlzIHNpbWlsYXIgdG8gYGdlbmVyYXRlLW5ldy1idWZmZXItbmFtZScgYnV0IGZvciBhbGlzdHMu IgorICAobGV0ICgodW5pcXVlcykKKyAgICAgICAgKGh0IChtYWtlLWhhc2gtdGFibGUgOnNpemUg KGxlbmd0aCBhbGlzdCkgOnRlc3QgIydlcXVhbCkpKQorICAgIChkb2xpc3QgKGVsdCBhbGlzdCkK KyAgICAgIChsZXQqICgoa2V5IChjYXIgZWx0KSkKKyAgICAgICAgICAgICAoa2V5IChpZiAoc3Ry aW5ncCBrZXkpIGtleSAoZm9ybWF0ICIlUyIga2V5KSkpCisgICAgICAgICAgICAgKHVuaXF1ZS1r ZXkga2V5KSA7IExlYXZlIHByb3BlcnRpZXMgaW50YWN0LgorICAgICAgICAgICAgIChrZXkgKHN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIGtleSkpCisgICAgICAgICAgICAgKGNvdW50IChnZXRoYXNo IGtleSBodCkpKQorICAgICAgICAod2hlbiBjb3VudAorICAgICAgICAgIChzZXRxIGNvdW50ICgx KyBjb3VudCkpCisgICAgICAgICAgKHNldHEgdW5pcXVlLWtleSAoaWYgKGZ1bmN0aW9ucCBzdWZm aXgtZm9ybWF0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHN1ZmZp eC1mb3JtYXQgZWx0IGNvdW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0 IChjb25jYXQgIiVzIiAob3Igc3VmZml4LWZvcm1hdCAiPCVkPiIpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuaXF1ZS1rZXkgY291bnQpKSkpCisgICAgICAgIChwdXNo IChjb25zIHVuaXF1ZS1rZXkgKGNkciBlbHQpKSB1bmlxdWVzKQorICAgICAgICAocHV0aGFzaCBr ZXkgKG9yIGNvdW50IDEpIGh0KSkpCisgICAgKG5yZXZlcnNlIHVuaXF1ZXMpKSkKKwogKHByb3Zp ZGUgJ3N1YnIteCkKIAogOzs7IHN1YnIteC5lbCBlbmRzIGhlcmUKZGlmZiAtLWdpdCBhL3Rlc3Qv bGlzcC9taXNjLXRlc3RzLmVsIGIvdGVzdC9saXNwL21pc2MtdGVzdHMuZWwKaW5kZXggYjZmNWYw MWFkMmEuLjdmZTQ0YjE3MmY3IDEwMDY0NAotLS0gYS90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbAor KysgYi90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbApAQCAtMjQzLDUgKzI0Myw1NiBAQCBtaXNjLXRl c3Qtc3RyaW5nLXBpeGVsLXdpZHRoLWRpc3BsYXktbGluZS1udW1iZXJzCiAgICAgICAoc2V0cS1k ZWZhdWx0IGRpc3BsYXktbGluZS1udW1iZXJzIGRsbikpCiAgICAgKHNob3VsZCAoPSB3MCB3MSkp KSkKIAorKGVydC1kZWZ0ZXN0IG1pc2MtdGVzdC11bmlxdWlmeS1zdHJpbmdzICgpCisgIChzaG91 bGQgKGVxdWFsICh1bmlxdWlmeS1zdHJpbmdzCisgICAgICAgICAgICAgICAgICAnKCkpCisgICAg ICAgICAgICAgICAgICcoKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1zdHJpbmdzCisg ICAgICAgICAgICAgICAgICAnKCJhIiAiYiIgImMiICJkIiAiZSIpKQorICAgICAgICAgICAgICAg ICAgJygiYSIgImIiICJjIiAiZCIgImUiKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1z dHJpbmdzCisgICAgICAgICAgICAgICAgICAnKCJhIiAiYSIgImIiICJjIiAiZCIgImQiICJkIiAi ZSIpKQorICAgICAgICAgICAgICAgICAnKCJhIiAiYTwyPiIgImIiICJjIiAiZCIgImQ8Mj4iICJk PDM+IiAiZSIpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHVuaXF1aWZ5LXN0cmluZ3MKKyAgICAgICAg ICAgICAgICAgICcoImEiICJhIiAiYiIgImMiICJkIiAiZCIgImQiICJlIikKKyAgICAgICAgICAg ICAgICAgICIoJWQpIikKKyAgICAgICAgICAgICAgICAgJygiYSIgImEoMikiICJiIiAiYyIgImQi ICJkKDIpIiAiZCgzKSIgImUiKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1zdHJpbmdz CisgICAgICAgICAgICAgICAgICAnKCJhIiAiYSIgImIiICJjIiAiZCIgImQiICJkIiAiZSIpCisg ICAgICAgICAgICAgICAgICAobGFtYmRhIChzdHJpbmcgY291bnQpIChmb3JtYXQgIiVzWyVkXSIg c3RyaW5nIGNvdW50KSkpCisgICAgICAgICAgICAgICAgICcoImEiICJhWzJdIiAiYiIgImMiICJk IiAiZFsyXSIgImRbM10iICJlIikpKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktc3RyaW5n cworICAgICAgICAgICAgICAgICAgYCgsKHByb3BlcnRpemUgImEiICdpZCAxKSAsKHByb3BlcnRp emUgImEiICdpZCAyKSAiYSIKKyAgICAgICAgICAgICAgICAgICAgImIiICJjIiAiZCIgImQiICJk IiAiZSIpKQorICAgICAgICAgICAgICAgICBgKCwocHJvcGVydGl6ZSAiYSIgJ2lkIDEpICwocHJv cGVydGl6ZSAiYTwyPiIgJ2lkIDIpICJhPDM+IgorICAgICAgICAgICAgICAgICAgICJiIiAiYyIg ImQiICJkPDI+IiAiZDwzPiIgImUiKSkpKQorCisoZXJ0LWRlZnRlc3QgbWlzYy10ZXN0LXVuaXF1 aWZ5LWFsaXN0LWtleXMgKCkKKyAgKHNob3VsZCAoZXF1YWwgKHVuaXF1aWZ5LWFsaXN0LWtleXMK KyAgICAgICAgICAgICAgICAgICcoKSkKKyAgICAgICAgICAgICAgICAgJygpKSkKKyAgKHNob3Vs ZCAoZXF1YWwgKHVuaXF1aWZ5LWFsaXN0LWtleXMKKyAgICAgICAgICAgICAgICAgICcoKCJhIiAi QSIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZSIgIkUiKSkpCisgICAgICAgICAg ICAgICAgICcoKCJhIiAiQSIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZSIgIkUi KSkpKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktYWxpc3Qta2V5cworICAgICAgICAgICAg ICAgICAgJygoImEiICJBIikgKCJhIiAiQTIiKSAoImIiICJCIikgKCJjIiAiQyIpICgiZCIgIkQi KSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKSkKKyAgICAgICAgICAgICAgICAgJygo ImEiICJBIikgKCJhPDI+IiAiQTIiKSAoImIiICJCIikgKCJjIiAiQyIpICgiZCIgIkQiKSAoImQ8 Mj4iICJEMiIpICgiZDwzPiIgIkQzIikgKCJlIiAiRSIpKSkpCisgIChzaG91bGQgKGVxdWFsICh1 bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImEiICJB MiIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCIgIkQyIikgKCJkIiAiRDMiKSAo ImUiICJFIikpCisgICAgICAgICAgICAgICAgICAiKCVkKSIpCisgICAgICAgICAgICAgICAgICco KCJhIiAiQSIpICgiYSgyKSIgIkEyIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJk KDIpIiAiRDIiKSAoImQoMykiICJEMyIpICgiZSIgIkUiKSkpKQorICAoc2hvdWxkIChlcXVhbCAo dW5pcXVpZnktYWxpc3Qta2V5cworICAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhIiAi QTIiKSAoImIiICJCIikgKCJjIiAiQyIpICgiZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikg KCJlIiAiRSIpKQorICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoZWx0IGNvdW50KSAoZm9ybWF0 ICIlc1slZF0iIChjYXIgZWx0KSBjb3VudCkpKQorICAgICAgICAgICAgICAgICAnKCgiYSIgIkEi KSAoImFbMl0iICJBMiIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZFsyXSIgIkQy IikgKCJkWzNdIiAiRDMiKSAoImUiICJFIikpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHVuaXF1aWZ5 LWFsaXN0LWtleXMKKyAgICAgICAgICAgICAgICAgIGAoKCwocHJvcGVydGl6ZSAiYSIgJ2lkIDEp ICJBIikgKCwocHJvcGVydGl6ZSAiYSIgJ2lkIDIpICJBMiIpCisgICAgICAgICAgICAgICAgICAg ICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCIgIkQyIikgKCJkIiAiRDMiKSAoImUi ICJFIikpKQorICAgICAgICAgICAgICAgICBgKCgsKHByb3BlcnRpemUgImEiICdpZCAxKSAiQSIp ICgsKHByb3BlcnRpemUgImE8Mj4iICdpZCAyKSAiQTIiKQorICAgICAgICAgICAgICAgICAgICgi YiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZDwyPiIgIkQyIikgKCJkPDM+IiAiRDMiKSAo ImUiICJFIikpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHVuaXF1aWZ5LWFsaXN0LWtleXMKKyAgICAg ICAgICAgICAgICAgICcoKDEgIkEiKSAoMSAiQTIiKSAoMiAiQiIpICgiYyIgIkMiKSAoImQiICJE IikgKCJkIiAiRDIiKSAoImQiICJEMyIpICgiZSIgIkUiKSkpCisgICAgICAgICAgICAgICAgICco KCIxIiAiQSIpICgiMTwyPiIgIkEyIikgKCIyIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJk PDI+IiAiRDIiKSAoImQ8Mz4iICJEMyIpICgiZSIgIkUiKSkpKSkKKwogKHByb3ZpZGUgJ21pc2Mt dGVzdHMpCiA7OzsgbWlzYy10ZXN0cy5lbCBlbmRzIGhlcmUKLS0gCjIuNTIuMAoK --00000000000090e4620649eeb157--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 2 Feb 2026 07:40:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 02 02:40:48 2026
Received: from localhost ([127.0.0.1]:52360 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vmoYB-0002bV-J9
for submit <at> debbugs.gnu.org; Mon, 02 Feb 2026 02:40:47 -0500
Received: from mout-p-102.mailbox.org ([2001:67c:2050:0:465::102]:51664)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vmoY9-0002aj-9t
for 80283 <at> debbugs.gnu.org; Mon, 02 Feb 2026 02:40:45 -0500
Received: from smtp202.mailbox.org (smtp202.mailbox.org
[IPv6:2001:67c:2050:b231:465::202])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
(No client certificate requested)
by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4f4JSN4Mhkz9tdq;
Mon, 2 Feb 2026 08:40:36 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001;
t=1770018036;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=K2TM4BWgWrtc0hiBjo7C4JAoMR7tDQ63BH5tI43WM20=;
b=V0DThC3VyRzMB6bYzSnkxT8yWLUxvXuZjtY4QOQHP4gU5htpMK1C2IIMrnQKJ92DMu/t+A
DBzYmAmPSJC6ucH1ILnD1UJzFiUPLOGSECCHP2eO5/v/r2h6/KFDL9EsnB9QIDaayRIO+l
jRxqFJhn1PMbTQ14Tmn8+IUy7zXO9x4/dGfbBDDp/sHO6n+jAg2NpKsCMw2R8t6caj61ez
MULpBxx+l8M1FuUBHgpNYg65dspbklmY4GOUfnT/NAE+s+UKxORYVGPVNJu95U9p46Idy+
cb9JtyJXaEd7twsutjhIKK3aQYAi+wQb7eb67hCgH7jBB0gEdlC2++RWf+Vbbw==
Authentication-Results: outgoing_mbo_mout; dkim=none;
spf=pass (outgoing_mbo_mout: domain of juri@HIDDEN designates
2001:67c:2050:b231:465::202 as permitted sender)
smtp.mailfrom=juri@HIDDEN
From: Juri Linkov <juri@HIDDEN>
To: =?iso-8859-1?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
In-Reply-To: <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN>
Organization: LINKOV.NET
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<87pl6ogao5.fsf@HIDDEN>
<CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN>
<87y0lc5q36.fsf@HIDDEN>
<CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN>
<CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN>
Date: Mon, 02 Feb 2026 09:39:34 +0200
Message-ID: <877bsv61ix.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Rspamd-Queue-Id: 4f4JSN4Mhkz9tdq
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 80283
Cc: 80283 <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.0 (-)
--=-=-=
Content-Type: text/plain
> Try the attached patch.
>
> This one. I renamed format to suffix-format to be more precise.
Thanks, this works nicely with your patch:
--=-=-=
Content-Type: text/x-diff
Content-Disposition: inline; filename=imenu-uniquify-suffix-format.patch
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 60b824b9293..4b15fd4f884 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -148,6 +148,13 @@ imenu-level-separator
Used for flattening nested indexes with name concatenation."
:type 'string)
+(defcustom imenu-uniquify-suffix-format "(%s)"
+ "The format of suffix to disambiguate non-unique index names.
+Used to ensure unique index names flattened by the values
+`annotation' and `group' of `imenu-flatten'.
+When nil, use text properties to disambiguate non-unique names."
+ :type '(choice string (const nil)))
+
(defcustom imenu-flatten nil
"Whether to flatten the list of sections in an imenu or show it nested.
If nil, use nested indexes.
@@ -160,13 +167,18 @@ imenu-flatten
according to the sections.
Any other value is treated as `prefix'.
-Since the values `annotation' and `group' rely on text properties,
-you can use them only by selecting candidates from the completions
+When customized to the values `annotation' and `group', and
+`imenu-uniquify-suffix-format' is non-nil, it's used to disambiguate
+non-unique index names by appending a unique suffix to them.
+
+Otherwise, the values `annotation' and `group' rely on text properties.
+But you can use them only by selecting candidates from the completions
buffer, not by typing in the minibuffer. This also means that
if you use `minibuffer-next-completion' (`M-<down>') to select
a completion while point stays in the minibuffer, you need
to customize `minibuffer-completion-auto-choose' to nil that
doesn't insert completion candidates to the minibuffer.
+
Also note that for using the value `group' you need to customize
`completions-group' to the value t, and `completions-format'
to the value `vertical'.
@@ -813,7 +825,8 @@ imenu--completion-buffer
nil t nil 'imenu--history-list name)))
(when (stringp name)
- (or (get-text-property 0 'imenu-choice name)
+ (or (and (not imenu-uniquify-suffix-format)
+ (get-text-property 0 'imenu-choice name))
(progn
(setq choice (assoc name prepared-index-alist))
(if (imenu--subalist-p choice)
@@ -924,7 +937,11 @@ imenu-choose-buffer-index
(setq index-alist (if alist alist (imenu--make-index-alist)))
(cond
(imenu-flatten
- (setq index-alist (imenu--flatten-index-alist index-alist t)))
+ (setq index-alist (imenu--flatten-index-alist index-alist t))
+ (when (and (memq imenu-flatten '(annotation group))
+ imenu-uniquify-suffix-format)
+ (setq index-alist (uniquify-alist-keys
+ index-alist imenu-uniquify-suffix-format))))
((when-let* ((alist (if (eq (car index-alist) imenu--rescan-item)
(cdr index-alist) index-alist))
(name (caar alist)))
--=-=-=--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 1 Feb 2026 20:15:47 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 01 15:15:46 2026 Received: from localhost ([127.0.0.1]:44155 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vmdrG-0003Do-BY for submit <at> debbugs.gnu.org; Sun, 01 Feb 2026 15:15:46 -0500 Received: from mail-vk1-xa34.google.com ([2607:f8b0:4864:20::a34]:51689) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vmdrD-0003DJ-N0 for 80283 <at> debbugs.gnu.org; Sun, 01 Feb 2026 15:15:44 -0500 Received: by mail-vk1-xa34.google.com with SMTP id 71dfb90a1353d-566474a6e10so3136093e0c.3 for <80283 <at> debbugs.gnu.org>; Sun, 01 Feb 2026 12:15:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769976943; cv=none; d=google.com; s=arc-20240605; b=TBLcpndeHJhBPQ/1GI+gnlPsBtkZj0pswk0dq7iRuMfxZ2hihMXrPnUQo+Jbmxr+Bt IXND/hNaBjpLH9UaDS6KF8NPzseoejzR2PHywVo7P+JCKZH52O5sBrrFpRZSq4ckPqfI OGm5NmprdP30jkJ+tSz7GCNBnDxBdVfEcLXkhycNNxRtHfiGCkb3snVRWVcbEUOln2rq baFJ6UGXCUngXtc1mmC+UQaoGjaILXwGBGhiDlVfHpIX7Hx8ZyovUks61sHawESBbLVV rQaxTbvmMgT46SC67coSYEvTcR/HqP08ShZbjPafpnS7TIsTI6dUZz3cyINaloRviC/o v4RA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=atA78zsWDKucKB7JMTby2vV0+tlZFNj0B4vuQBW7CHs=; fh=YDUMVpC2/rm0VkTytaZ4krjb3bffP7Zzww8IypRgzmk=; b=CdSUdcqaD5paWT1AyThCY+26Tv81/DpaTWgcJDsW8FVY8a1Iq1LmawNl8Zlj4kD24l v95VbjO+h+ZcjdOnin0Pw5yYCjkGR/9gD7HlGvI+oZWuNfSlESnrOqqjk61QsNJeUSQ2 +6mjqWKOSYHLwQZ9QJc+P650IoOvDX/OO7w3l14DIvdz+W2qLidVTsxxyjDxb3AUw1ba foSexqZnGrPSrmLhxRlazAyPketbV/rDBpvTcBkZFvTEZZTkdx2MR55+C/el4O25QR1D 3pWhouUaodrf4mxcMYchxt4uQA7NTtmGgrw9xsz+4en/Ib+l+lSOYYu2LsX4llMJi0w5 Ouag==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769976943; x=1770581743; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=atA78zsWDKucKB7JMTby2vV0+tlZFNj0B4vuQBW7CHs=; b=D/yjVZUpSECG2lj3utLCPvEgWAc86JqtkXH75vCKF053IWpbOnXu5hQhwlMdXAJkNc OYzNm5noozbLZVM1g9Vx4nNxtNQUUa39LdOVn2yIst6mPObL61UDFt7fIaXspBaxsPaz pRYFyNyfsgjwT1LtyKIrRWgdZpXGAtwjjPIAdA1GlXxZ9PY7cx6j6dGntMcq/keclvpf PQSUpRNKfeJ7/MguumhlDQU6eFXAAPiuH4dyHH6ve1AitoT2JB28TFrVBTPrGyShefUL o9pCWTXcayvd+F2L1CnPAO/VNk2mQornurCfJI/YTv1B8OMl8I6n7wcKlDbENTr6drY4 5VyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769976943; x=1770581743; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=atA78zsWDKucKB7JMTby2vV0+tlZFNj0B4vuQBW7CHs=; b=dttP6oZ99zlLtURk10pMWZbu7zwz1NRKKlIbwX1S3WSsGc7pkEwsWSGYLQIYS3a44S s5e5NHmmlVCN36hs0s8CAfH4RyQfyilpVRxZKC+WuoiQjZmKxUKw/zYLf0WwnD9/tOCZ cG4QykJLu45+i2n78VxUHyvaEpEbLjt0Isixo20PDu6HDlVpzV4FcZtKbbCascaD0wRw NXkWCogB4WvIFmFNc8fkuIRRpOFybfuRtoKVxQyu86zwVIYQ/Pr74Kk2D3y+02PotzOD kjhCdLajfYUu7RlOVVnsumXocb07CqsLIPq6qFEd3aK5XWKCD7Zl18/Z+pVixeeaUpaB Pu3Q== X-Gm-Message-State: AOJu0Yy8Yf4A+ywGQ1xaa7HKriERyxKRIm0w+lizy6HAGSKX1zIJ0uDQ 8UWeDEyf6e1fZX0oQ+l8eHKYDmSJHkV3ZHXQs5EpmQdrG1tmY1EywsCtf/XonhoJEXQtJvpda/A oP806g6A9KfNjsxBUTieGwbkuo0PNiPQ= X-Gm-Gg: AZuq6aL1nRu4/jQgMeQapNC497cZZRogH3kogq0+Pk4V4VvHSKIr1EmEFcJLI35IWm1 VlM8TchqZRzFh6p9SuAn6sXlQv5JX2roGGWqQOtHb8yfloGQrxBdErOLp2CG1iqyR8SVTO2hkFi n6PFRwvF1piNiwpbbahbRbGQY5wVV5ZzACEdHYQrKbRTPlxvkD/AgW9cTgKntnM4jf4IdFu1Thj +siXEmc4G8BVk+BteYiou3Fny0Lc+4kmMseTC0+az0TzuKQuhjXGAqNLNEi40DWzrJU8KqJ594r PIlmwBr8gBLbH3QRx1i5bcfGXP3fmap4a1KHcj9L/oMmzjNiqRQ= X-Received: by 2002:a05:6102:c15:b0:5f5:773d:fca with SMTP id ada2fe7eead31-5f8e2555026mr3358919137.22.1769976942769; Sun, 01 Feb 2026 12:15:42 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> In-Reply-To: <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 1 Feb 2026 15:15:31 -0500 X-Gm-Features: AZwV_QjphVEuAjFBXui-0LxaQR84AJod2XHo_Otj0MCoemISjj0XuMnCfRbwgbE Message-ID: <CAN+1Hbp7HMoVak6z1AdC+WB2j-MuHAMyS+PqYs6v+0YiP75vYA@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Juri Linkov <juri@HIDDEN> Content-Type: multipart/alternative; boundary="000000000000ef38f50649c8de74" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: 80283 <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: 0.0 (/) --000000000000ef38f50649c8de74 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 1, 2026 at 12:59=E2=80=AFPM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > On Sun, Feb 1, 2026 at 12:53=E2=80=AFPM St=C3=A9phane Marks <shipmints@gm= ail.com> > wrote: > >> On Sun, Feb 1, 2026 at 12:34=E2=80=AFPM Juri Linkov <juri@HIDDEN> wr= ote: >> >>> >> I've been using similar functions to assist with `completing-read` >>> >> cases with duplicate candidates and I'd prefer to use core functions= . >>> >> Juri and I will use these in forthcoming tab-bar.el and frame.el >>> >> `completing-read` enhancements. >>> > >>> > Thanks, we need such function in imenu.el as well. >>> >>> This works great for imenu.el: >>> >>> diff --git a/lisp/imenu.el b/lisp/imenu.el >>> index 60b824b9293..483ab2920ee 100644 >>> --- a/lisp/imenu.el >>> +++ b/lisp/imenu.el >>> @@ -924,7 +924,8 @@ imenu-choose-buffer-index >>> (setq index-alist (if alist alist (imenu--make-index-alist))) >>> (cond >>> (imenu-flatten >>> - (setq index-alist (imenu--flatten-index-alist index-alist t))) >>> + (setq index-alist (imenu--flatten-index-alist index-alist t)) >>> + (setq index-alist (uniquify-alist-keys index-alist))) >>> ((when-let* ((alist (if (eq (car index-alist) imenu--rescan-ite= m) >>> (cdr index-alist) index-alist)) >>> (name (caar alist))) >>> >>> You can see this by customizing 'imenu-flatten' to 'annotation', >>> and typing 'M-g i imenu TAB' in imenu.el. Previously, it always >>> navigated to the first occurrence of 'imenu'. But now due to >>> disambiguation, "imenu<2>" moves to the second. >>> >>> However, "imenu<2>" is placed at the end of the completions buffer. >>> Would it be possible to specify the format of the suffix, then >>> "imenu(2)" will be placed after "imenu": >>> >>> imenu (Types) >>> imenu(2) >>> >> >> Try the attached patch. >> > > This one. I renamed format to suffix-format to be more precise. > Err, in the alist function, I think "%s" is better than "%S" for non-string key conversion. In the next go 'round, I'll change it. --000000000000ef38f50649c8de74 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 1, 2026 at 12:59=E2=80=AFPM St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>= </div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style= =3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-= serif">On Sun, Feb 1, 2026 at 12:53=E2=80=AFPM St=C3=A9phane Marks <<a h= ref=3D"mailto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a= >> wrote:</span></div></div><div class=3D"gmail_quote"><blockquote class= =3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg= b(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div sty= le=3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,san= s-serif">On Sun, Feb 1, 2026 at 12:34=E2=80=AFPM Juri Linkov <<a href=3D= "mailto:juri@HIDDEN" target=3D"_blank">juri@HIDDEN</a>> wrote:</= span></div></div><div class=3D"gmail_quote"><blockquote class=3D"gmail_quot= e" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204)= ;padding-left:1ex">>> I've been using similar functions to assist= with `completing-read`<br> >> cases with duplicate candidates and I'd prefer to use core fun= ctions.<br> >> Juri and I will use these in forthcoming tab-bar.el and frame.el<b= r> >> `completing-read` enhancements.<br> ><br> > Thanks, we need such function in imenu.el as well.<br> <br> This works great for imenu.el:<br> <br> diff --git a/lisp/imenu.el b/lisp/imenu.el<br> index 60b824b9293..483ab2920ee 100644<br> --- a/lisp/imenu.el<br> +++ b/lisp/imenu.el<br> @@ -924,7 +924,8 @@ imenu-choose-buffer-index<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq index-alist (if alist alist (imenu--make-i= ndex-alist)))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0(cond<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 (imenu-flatten<br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq index-alist (imenu--flatten-index-alist = index-alist t)))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq index-alist (imenu--flatten-index-alist = index-alist t))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq index-alist (uniquify-alist-keys index-a= list)))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((when-let* ((alist (if (eq (car index-alist) i= menu--rescan-item)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cdr index-alist) index-alist))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(name (caar alist)))<br> <br> You can see this by customizing 'imenu-flatten' to 'annotation&= #39;,<br> and typing 'M-g i imenu TAB' in imenu.el.=C2=A0 Previously, it alwa= ys<br> navigated to the first occurrence of 'imenu'.=C2=A0 But now due to<= br> disambiguation, "imenu<2>" moves to the second.<br> <br> However, "imenu<2>" is placed at the end of the completions= buffer.<br> Would it be possible to specify the format of the suffix, then<br> "imenu(2)" will be placed after "imenu":<br> <br> =C2=A0 imenu (Types)<br> =C2=A0 imenu(2)<br></blockquote><div><br></div><div style=3D"font-family:mo= nospace">Try the attached patch.</div></div></div></blockquote><div><br></d= iv><div style=3D"font-family:monospace">This one.=C2=A0 I renamed format to= suffix-format to be more precise.</div></div></div></blockquote><div><br><= /div><div class=3D"gmail_default" style=3D"font-family:monospace">Err, in t= he alist=C2=A0function, I think "%s" is better than "%S"= ; for non-string key conversion.=C2=A0 In the next go 'round, I'll = change it.</div></div></div> --000000000000ef38f50649c8de74--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 1 Feb 2026 17:59:52 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 01 12:59:51 2026 Received: from localhost ([127.0.0.1]:42576 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vmbjj-0007e8-9S for submit <at> debbugs.gnu.org; Sun, 01 Feb 2026 12:59:51 -0500 Received: from mail-vk1-xa2e.google.com ([2607:f8b0:4864:20::a2e]:51212) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vmbjg-0007dj-Fu for 80283 <at> debbugs.gnu.org; Sun, 01 Feb 2026 12:59:49 -0500 Received: by mail-vk1-xa2e.google.com with SMTP id 71dfb90a1353d-56641b5a471so3417246e0c.2 for <80283 <at> debbugs.gnu.org>; Sun, 01 Feb 2026 09:59:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769968788; cv=none; d=google.com; s=arc-20240605; b=jrp6iqckLNrEht+Sy+InlGe3P+KSWduMr1BH3VIpxVjkaBeeiihf2+x2y163q5jeqQ mU/nrTgxqzhHzbbLDp/jD4kdxosXWMPBfVu5sKHduQiHl/4VdJjWE9q5VDUjt9Cw3H0r bodeQjDR83/S/QAqXL02IHjZeIGnDiOkhXnlgCfMRjgTEKSfeUV1UiwQH4gkCNt1qfs7 7rDk3JU2NMlBwgbDh1KFuRWSXAD1gaEef6TSkruY0LTzOMSN47P0qAVoWk+zqrgjsFn5 GhvuFjkDdE1DP9YyXpAKQoiHAIRjgVYrkT66oXP1axB+/7sC4muXYv4RcDABVX/EQsOq UzFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=evSDnbSBFJPcCzq+kSGr5ohBs4ddbCNsjrSFzXKeia4=; fh=YDUMVpC2/rm0VkTytaZ4krjb3bffP7Zzww8IypRgzmk=; b=AFlWc2NlHeASDqlBgv0I91d6BaxQH++/M6WE1ps2Arrv2c53EQCi0tY9i44uch6d9u MADFtQDaHpQ6sgunFqmFsrvSzeoOKyiivi8/NFqtQlmcoVL+K2qpEzdJUtT5TBKK6qi5 kwjvXqwhX892SE15CSi04JU0LcqrTs3fKJCqmN88rYLRZr0XBqtPtoc6m7B+/KdDKEwo KdXeF5iP6dR4hbbWmlnSf40fsygoSwQ7ZctO1RDXxlrC17JLcbXLGtQg+j64/19Y8WTw x9BlwFvklfouw2UHXFvV3kKWjnlggXxIXgfqsCArrBUghkbi/nZxCM/1i/KFLRzFIXRi bHdQ==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769968788; x=1770573588; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=evSDnbSBFJPcCzq+kSGr5ohBs4ddbCNsjrSFzXKeia4=; b=aLVV93BXIrru92UQWud8QVXGinXWl1N/za6KqbGj3cRveKTWTh9WtAEqxizLGCsTWL 7yHagiVZlPTadNIKpu3CT6pbOlo3MIuZlcGLCELQViOd89OvmtYeMDQZNsai5dafyuTg +kIKOm9f6Ji0ttNP9WJYy1ANAetYsEfVzwg7Wfd1HdxtIpMeTlRIAfS6T5hp62QlrgiW F136Bphbd9y8AkfgC8Zv+oaI3meFMJuBS2bPUc15PsRq6Xn97jvHNVfxAY5zAZst7P0K oF3wX+SQQASe5hMuO1PmNIdBsb+hMNesK4eOmtMWFRd2YllXle279IG4JWaHcTUHCVd3 sb4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769968788; x=1770573588; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=evSDnbSBFJPcCzq+kSGr5ohBs4ddbCNsjrSFzXKeia4=; b=hwiIIzBPulH/sDJEHPgs1MocaMe+yGmOoKXgp7Pq+VoG9fkr8eSUDrxUFlu361wQre flMq5Ev+0Yj9t5S9RWTqhNL5nF/y75A9vrC1VSRC7yJPBiD7Pdk/1H1KQzR0S90pU+Rh g1p3NTCgOpvJvkGBYX32D2GXBOMGg4mwtUYIECAO/ijlU81JKFdYHHAX4HcCY50LPZcb iV0fLHBUq3xsqlqcsVKhggaKnprHAaD/oFRMBX7D+SDrFU5VhXvgDu8Sgz5B+PoX/3vH UrokT7hIMOu5uycBw1wgHqAvmIq9jZflGWmTJDZxvr+b6P6ZXliLup6Ev/S0IWXm8fgS acCA== X-Gm-Message-State: AOJu0YxdDj8p4b2VGvvvLFg0Va9pziVS3As+PpgoFjO09HFYCN8a3U61 sWRNYeb2iOc/4+lHxNb8hNWNTdNfIUPinS1ME65+RfAh5RMeJm6O7QH/gz2IMHM8vuR6LEplpzl g+BuhnVi3jPpqXLiuwaq32LFnA/soUhASEw== X-Gm-Gg: AZuq6aJkA1bNeVcyJB9M1Z2GTPUYBKb1x4Lo+bevql+w5Xf0Xl9Q+Ut+kQ2LdQauRzm UAKNm2nA4T1ACnhxpF1+QNd9hwT9pM+Wt7+w8IGEb5wcek9Uf3PKAKNew3pe86lVCJdJFV3vjoH UupnOVfQpeY71LJC73DVod4rRT4eM7sDcfU1/HKDfr9KAIPRmQSidYAF1h2Ok050pEH2YWkXxxR sCWdOwzxBC0sH3om2Xja3+1TAdJPdJHag5VV2wyW0Q0QXbM8tpgx7oliy/feHLB2zOoeuy/01wC TusO1vVFNBlRpH0zLfUKqPJwPtiXnlQS+4X33T6BR/YEpr5BfQs= X-Received: by 2002:a05:6102:50ac:b0:5e4:95f6:3dca with SMTP id ada2fe7eead31-5f8e259affamr3436839137.30.1769968787650; Sun, 01 Feb 2026 09:59:47 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> In-Reply-To: <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 1 Feb 2026 12:59:36 -0500 X-Gm-Features: AZwV_Qiflo9CkxmqQeMNvBmmDHzaJsEHvdkWjWdSoGKPGAs13W_Y2NUWgGg57Ic Message-ID: <CAN+1Hbqrc-ZgtuiQVxtMPNL=C9nqKXXxPQva0UA1uU6UfAXu3Q@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Juri Linkov <juri@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000da10de0649c6f8a0" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: 80283 <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: 0.0 (/) --000000000000da10de0649c6f8a0 Content-Type: multipart/alternative; boundary="000000000000da10dc0649c6f89e" --000000000000da10dc0649c6f89e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 1, 2026 at 12:53=E2=80=AFPM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > On Sun, Feb 1, 2026 at 12:34=E2=80=AFPM Juri Linkov <juri@HIDDEN> wro= te: > >> >> I've been using similar functions to assist with `completing-read` >> >> cases with duplicate candidates and I'd prefer to use core functions. >> >> Juri and I will use these in forthcoming tab-bar.el and frame.el >> >> `completing-read` enhancements. >> > >> > Thanks, we need such function in imenu.el as well. >> >> This works great for imenu.el: >> >> diff --git a/lisp/imenu.el b/lisp/imenu.el >> index 60b824b9293..483ab2920ee 100644 >> --- a/lisp/imenu.el >> +++ b/lisp/imenu.el >> @@ -924,7 +924,8 @@ imenu-choose-buffer-index >> (setq index-alist (if alist alist (imenu--make-index-alist))) >> (cond >> (imenu-flatten >> - (setq index-alist (imenu--flatten-index-alist index-alist t))) >> + (setq index-alist (imenu--flatten-index-alist index-alist t)) >> + (setq index-alist (uniquify-alist-keys index-alist))) >> ((when-let* ((alist (if (eq (car index-alist) imenu--rescan-item= ) >> (cdr index-alist) index-alist)) >> (name (caar alist))) >> >> You can see this by customizing 'imenu-flatten' to 'annotation', >> and typing 'M-g i imenu TAB' in imenu.el. Previously, it always >> navigated to the first occurrence of 'imenu'. But now due to >> disambiguation, "imenu<2>" moves to the second. >> >> However, "imenu<2>" is placed at the end of the completions buffer. >> Would it be possible to specify the format of the suffix, then >> "imenu(2)" will be placed after "imenu": >> >> imenu (Types) >> imenu(2) >> > > Try the attached patch. > This one. I renamed format to suffix-format to be more precise. --000000000000da10dc0649c6f89e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 1, 2026 at 12:53=E2=80=AFPM St=C3=A9phane Marks <<a href=3D"= mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>> wrote:</span></div>= </div><div class=3D"gmail_quote gmail_quote_container"><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><div style= =3D"font-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-= serif">On Sun, Feb 1, 2026 at 12:34=E2=80=AFPM Juri Linkov <<a href=3D"m= ailto:juri@HIDDEN" target=3D"_blank">juri@HIDDEN</a>> wrote:</sp= an></div></div><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote"= style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);p= adding-left:1ex">>> I've been using similar functions to assist w= ith `completing-read`<br> >> cases with duplicate candidates and I'd prefer to use core fun= ctions.<br> >> Juri and I will use these in forthcoming tab-bar.el and frame.el<b= r> >> `completing-read` enhancements.<br> ><br> > Thanks, we need such function in imenu.el as well.<br> <br> This works great for imenu.el:<br> <br> diff --git a/lisp/imenu.el b/lisp/imenu.el<br> index 60b824b9293..483ab2920ee 100644<br> --- a/lisp/imenu.el<br> +++ b/lisp/imenu.el<br> @@ -924,7 +924,8 @@ imenu-choose-buffer-index<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq index-alist (if alist alist (imenu--make-i= ndex-alist)))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0(cond<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 (imenu-flatten<br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq index-alist (imenu--flatten-index-alist = index-alist t)))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq index-alist (imenu--flatten-index-alist = index-alist t))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq index-alist (uniquify-alist-keys index-a= list)))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((when-let* ((alist (if (eq (car index-alist) i= menu--rescan-item)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cdr index-alist) index-alist))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(name (caar alist)))<br> <br> You can see this by customizing 'imenu-flatten' to 'annotation&= #39;,<br> and typing 'M-g i imenu TAB' in imenu.el.=C2=A0 Previously, it alwa= ys<br> navigated to the first occurrence of 'imenu'.=C2=A0 But now due to<= br> disambiguation, "imenu<2>" moves to the second.<br> <br> However, "imenu<2>" is placed at the end of the completions= buffer.<br> Would it be possible to specify the format of the suffix, then<br> "imenu(2)" will be placed after "imenu":<br> <br> =C2=A0 imenu (Types)<br> =C2=A0 imenu(2)<br></blockquote><div><br></div><div style=3D"font-family:mo= nospace">Try the attached patch.</div></div></div></blockquote><div><br></d= iv><div class=3D"gmail_default" style=3D"font-family:monospace">This one.= =C2=A0 I renamed format to suffix-format to be more precise.</div></div></d= iv> --000000000000da10dc0649c6f89e-- --000000000000da10de0649c6f8a0 Content-Type: application/octet-stream; name="0001-Add-functions-uniquify-strings-and-uniquify-alist-ke.patch" Content-Disposition: attachment; filename="0001-Add-functions-uniquify-strings-and-uniquify-alist-ke.patch" Content-Transfer-Encoding: base64 Content-ID: <f_ml41pj1g0> X-Attachment-Id: f_ml41pj1g0 RnJvbSA3MGIxMjIwZDMyMmE2NTUzMTMyODQwNGUzZjE1MzFkZjJmZjM4MmNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjkgSmFuIDIwMjYgMTM6MDg6MTQgLTA1MDAK U3ViamVjdDogW1BBVENIXSBBZGQgZnVuY3Rpb25zIHVuaXF1aWZ5LXN0cmluZ3MgYW5kIHVuaXF1 aWZ5LWFsaXN0LWtleXMKIChidWcjODAyODMpCgoqIGxpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwg KHVuaXF1aWZ5LXN0cmluZ3MpOgoodW5pcXVpZnktYWxpc3Qta2V5cyk6IE5ldyBkZWZ1bnMuCiog dGVzdC9saXNwL21pc2MtdGVzdHMuZWwgKG1pc2MtdGVzdC11bmlxdWlmeS1zdHJpbmdzKToKKG1p c2MtdGVzdC11bmlxdWlmeS1hbGlzdC1rZXlzKTogTmV3IHRlc3RzLgoqIGV0Yy9ORVdTOiBBbm5v dW5jZSB0aGUgbmV3IGZ1bmN0aW9ucy4KLS0tCiBldGMvTkVXUyAgICAgICAgICAgICAgICAgIHwg IDkgKysrKysrCiBsaXNwL2VtYWNzLWxpc3Avc3Vici14LmVsIHwgNTkgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbCAgIHwgNDMg KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggOWQzNmY2YzNk OTYuLmU5NGVkZDI3OWYyIDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAt MzA4OCw2ICszMDg4LDE1IEBAIGRldGVybWluZWQgYnkgdGhlIG5ldyB1c2VyIG9wdGlvbiAncHVs c2UtZmFjZS1kdXJhdGlvbicuCiAKICoqIE1pc2NlbGxhbmVvdXMKIAorLS0tCisqKiogTmV3IGZ1 bmN0aW9ucyAndW5pcXVpZnktc3RyaW5ncycgYW5kICd1bmlxdWlmeS1hbGlzdC1rZXlzJy4KK1Ro ZXNlIGZ1bmN0aW9ucyBhcmUgc2ltaWxhciB0byAnZ2VuZXJhdGUtbmV3LWJ1ZmZlci1uYW1lJy4K Kyd1bmlxdWlmeS1zdHJpbmdzJyByZXR1cm5zIGEgY29weSBvZiBhIHN0cmluZyBsaXN0IHdpdGgg IjxOVU1CRVI+IgorYXBwZW5kZWQgdG8gZHVwbGljYXRlcy4gICd1bmlxdWlmeS1hbGlzdC1rZXlz JyByZXR1cm5zIGEgY29weSBvZiBhbgorYWxpc3Qgd2l0aCAiPE5VTUJFUj4iIGFwcGVuZGVkIHRv IGl0cyBkdXBsaWNhdGUga2V5cy4gIEFsbCBub24tc3RyaW5nCitrZXlzIGFyZSBmaXJzdCBjb252 ZXJ0ZWQgdG8gc3RyaW5ncy4gIEJvdGggZnVuY3Rpb25zIGFjY2VwdCBhbiBvcHRpb25hbAorc3Vm Zml4IGZvcm1hdCBzdHJpbmcgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgIjxOVU1CRVI+Ii4KKwog LS0tCiAqKiogVGhlIGZpcnN0IGNsaWVudCBmcmFtZSBub3cgc2hvd3Mgd2FybmluZ3MgZnJvbSBk YWVtb24gc3RhcnR1cC4KIFdoZW4gdGhlcmUgYXJlIHdhcm5pbmdzIGVtaXR0ZWQgZHVyaW5nIEVt YWNzIHN0YXJ0dXAsIHVzdWFsbHkgZHVlIHRvCmRpZmYgLS1naXQgYS9saXNwL2VtYWNzLWxpc3Av c3Vici14LmVsIGIvbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbAppbmRleCA4ZDA0OTU4NDg3Zi4u YmJkNzE5ZjAzZTggMTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwKKysrIGIv bGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbApAQCAtNTg1LDYgKzU4NSw2NSBAQCBlbWFjcy1ldGMt LWhpZGUtbG9jYWwtdmFyaWFibGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAo Zm9yd2FyZC1saW5lIC0xKSAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50 LW1heCkpKSkpCiAKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4gdW5pcXVpZnktc3RyaW5ncyAoc3Ry aW5ncyAmb3B0aW9uYWwgc3VmZml4LWZvcm1hdCkKKyAgIlJldHVybiBhIGNvcHkgb2YgU1RSSU5H UyB3aXRoIFwiPE5VTUJFUj5cIiBhcHBlbmRlZCB0byBkdXBsaWNhdGVzLgorU1RSSU5HUyBzaG91 bGQgYmUgYSBsaXN0IGFuZCBtYXkgaGF2ZSB0ZXh0IHByb3BlcnRpZXMgd2hpY2ggcmVtYWluCitp bnRhY3QuCisKK05VTUJFUiBpcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBpbnRlZ2VyIHN0 YXJ0aW5nIGF0IDIgZm9yIHRoZSBmaXJzdAorZHVwbGljYXRlLgorCitJZiBTVUZGSVgtRk9STUFU IGlzIG5vbi1uaWwsIGl0IGlzIGEgdmFsaWQgZm9ybWF0LWNvbnRyb2wgc3RyaW5nIHBhc3NlZAor dG8gdGhlIGZ1bmN0aW9uIGBmb3JtYXQnLCBhbmQgY29udGFpbmluZyBhIHNpbmdsZSBlbWJlZGRl ZCBcIiVkXCIuICBJdAorZGVmYXVsdHMgdG8gXCI8JWQ+XCIuCisKK1RoaXMgZnVuY3Rpb24gaXMg c2ltaWxhciB0byBgZ2VuZXJhdGUtbmV3LWJ1ZmZlci1uYW1lJyBidXQgZm9yIHN0cmluZworbGlz dHMuIgorICAobGV0ICgodW5pcXVlcykKKyAgICAgICAgKGh0IChtYWtlLWhhc2gtdGFibGUgOnNp emUgKGxlbmd0aCBzdHJpbmdzKSA6dGVzdCAjJ2VxdWFsKSkpCisgICAgKGRvbGlzdCAoc3RyaW5n IHN0cmluZ3MpCisgICAgICAobGV0KiAoKHVuaXF1ZS1rZXkgc3RyaW5nKSA7IExlYXZlIHByb3Bl cnRpZXMgaW50YWN0LgorICAgICAgICAgICAgIChrZXkgKHN1YnN0cmluZy1uby1wcm9wZXJ0aWVz IHN0cmluZykpCisgICAgICAgICAgICAgKGNvdW50IChnZXRoYXNoIGtleSBodCkpKQorICAgICAg ICAod2hlbiBjb3VudAorICAgICAgICAgIChzZXRxIGNvdW50ICgxKyBjb3VudCkpCisgICAgICAg ICAgKHNldHEgdW5pcXVlLWtleSAoZm9ybWF0IChjb25jYXQgIiVzIiAob3Igc3VmZml4LWZvcm1h dCAiPCVkPiIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUta2V5 IGNvdW50KSkpCisgICAgICAgIChwdXNoIHVuaXF1ZS1rZXkgdW5pcXVlcykKKyAgICAgICAgKHB1 dGhhc2gga2V5IChvciBjb3VudCAxKSBodCkpKQorICAgIChucmV2ZXJzZSB1bmlxdWVzKSkpCisK Kzs7OyMjI2F1dG9sb2FkCisoZGVmdW4gdW5pcXVpZnktYWxpc3Qta2V5cyAoYWxpc3QgJm9wdGlv bmFsIHN1ZmZpeC1mb3JtYXQpCisgICJSZXR1cm4gYSBjb3B5IG9mIEFMSVNUIHdpdGggXCI8TlVN QkVSPlwiIGFwcGVuZGVkIHRvIGR1cGxpY2F0ZSBrZXlzLgorQUxJU1Qga2V5cyBzaG91bGQgYmUg c3RyaW5ncyBhbmQgbWF5IGhhdmUgdGV4dCBwcm9wZXJ0aWVzIHdoaWNoIHJlbWFpbgoraW50YWN0 LiAgTm9uLXN0cmluZyBrZXlzIGFyZSBjb252ZXJ0ZWQgdG8gc3RyaW5ncy4KKworTlVNQkVSIGlz IGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGludGVnZXIgc3RhcnRpbmcgYXQgMiBmb3IgdGhl IGZpcnN0CitkdXBsaWNhdGUuCisKK0lmIFNVRkZJWC1GT1JNQVQgaXMgbm9uLW5pbCwgaXQgaXMg YSB2YWxpZCBmb3JtYXQtY29udHJvbCBzdHJpbmcgcGFzc2VkCit0byB0aGUgZnVuY3Rpb24gYGZv cm1hdCcsIGFuZCBjb250YWluaW5nIGEgc2luZ2xlIGVtYmVkZGVkIFwiJWRcIi4gIEl0CitkZWZh dWx0cyB0byBcIjwlZD5cIi4KKworVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIGBnZW5lcmF0 ZS1uZXctYnVmZmVyLW5hbWUnIGJ1dCBmb3IgYWxpc3RzLiIKKyAgKGxldCAoKHVuaXF1ZXMpCisg ICAgICAgIChodCAobWFrZS1oYXNoLXRhYmxlIDpzaXplIChsZW5ndGggYWxpc3QpIDp0ZXN0ICMn ZXF1YWwpKSkKKyAgICAoZG9saXN0IChlbHQgYWxpc3QpCisgICAgICAobGV0KiAoKGtleSAoY2Fy IGVsdCkpCisgICAgICAgICAgICAgKGtleSAoaWYgKHN0cmluZ3Aga2V5KSBrZXkgKGZvcm1hdCAi JVMiIGtleSkpKQorICAgICAgICAgICAgICh1bmlxdWUta2V5IGtleSkgOyBMZWF2ZSBwcm9wZXJ0 aWVzIGludGFjdC4KKyAgICAgICAgICAgICAoa2V5IChzdWJzdHJpbmctbm8tcHJvcGVydGllcyBr ZXkpKQorICAgICAgICAgICAgIChjb3VudCAoZ2V0aGFzaCBrZXkgaHQpKSkKKyAgICAgICAgKHdo ZW4gY291bnQKKyAgICAgICAgICAoc2V0cSBjb3VudCAoMSsgY291bnQpKQorICAgICAgICAgIChz ZXRxIHVuaXF1ZS1rZXkgKGZvcm1hdCAoY29uY2F0ICIlcyIgKG9yIHN1ZmZpeC1mb3JtYXQgIjwl ZD4iKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pcXVlLWtleSBjb3Vu dCkpKQorICAgICAgICAocHVzaCAoY29ucyB1bmlxdWUta2V5IChjZHIgZWx0KSkgdW5pcXVlcykK KyAgICAgICAgKHB1dGhhc2gga2V5IChvciBjb3VudCAxKSBodCkpKQorICAgIChucmV2ZXJzZSB1 bmlxdWVzKSkpCisKIChwcm92aWRlICdzdWJyLXgpCiAKIDs7OyBzdWJyLXguZWwgZW5kcyBoZXJl CmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9taXNjLXRl c3RzLmVsCmluZGV4IGI2ZjVmMDFhZDJhLi4wM2JlODU4OGQzZiAxMDA2NDQKLS0tIGEvdGVzdC9s aXNwL21pc2MtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL21pc2MtdGVzdHMuZWwKQEAgLTI0Myw1 ICsyNDMsNDggQEAgbWlzYy10ZXN0LXN0cmluZy1waXhlbC13aWR0aC1kaXNwbGF5LWxpbmUtbnVt YmVycwogICAgICAgKHNldHEtZGVmYXVsdCBkaXNwbGF5LWxpbmUtbnVtYmVycyBkbG4pKQogICAg IChzaG91bGQgKD0gdzAgdzEpKSkpCiAKKyhlcnQtZGVmdGVzdCBtaXNjLXRlc3QtdW5pcXVpZnkt c3RyaW5ncyAoKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktc3RyaW5ncworICAgICAgICAg ICAgICAgICAgJygpKQorICAgICAgICAgICAgICAgICAnKCkpKQorICAoc2hvdWxkIChlcXVhbCAo dW5pcXVpZnktc3RyaW5ncworICAgICAgICAgICAgICAgICAgJygiYSIgImIiICJjIiAiZCIgImUi KSkKKyAgICAgICAgICAgICAgICAgICcoImEiICJiIiAiYyIgImQiICJlIikpKQorICAoc2hvdWxk IChlcXVhbCAodW5pcXVpZnktc3RyaW5ncworICAgICAgICAgICAgICAgICAgJygiYSIgImEiICJi IiAiYyIgImQiICJkIiAiZCIgImUiKSkKKyAgICAgICAgICAgICAgICAgJygiYSIgImE8Mj4iICJi IiAiYyIgImQiICJkPDI+IiAiZDwzPiIgImUiKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlm eS1zdHJpbmdzCisgICAgICAgICAgICAgICAgICAnKCJhIiAiYSIgImIiICJjIiAiZCIgImQiICJk IiAiZSIpCisgICAgICAgICAgICAgICAgICAiKCVkKSIpCisgICAgICAgICAgICAgICAgICcoImEi ICJhKDIpIiAiYiIgImMiICJkIiAiZCgyKSIgImQoMykiICJlIikpKQorICAoc2hvdWxkIChlcXVh bCAodW5pcXVpZnktc3RyaW5ncworICAgICAgICAgICAgICAgICAgYCgsKHByb3BlcnRpemUgImEi ICdpZCAxKSAsKHByb3BlcnRpemUgImEiICdpZCAyKSAiYSIKKyAgICAgICAgICAgICAgICAgICAg ImIiICJjIiAiZCIgImQiICJkIiAiZSIpKQorICAgICAgICAgICAgICAgICBgKCwocHJvcGVydGl6 ZSAiYSIgJ2lkIDEpICwocHJvcGVydGl6ZSAiYTwyPiIgJ2lkIDIpICJhPDM+IgorICAgICAgICAg ICAgICAgICAgICJiIiAiYyIgImQiICJkPDI+IiAiZDwzPiIgImUiKSkpKQorCisoZXJ0LWRlZnRl c3QgbWlzYy10ZXN0LXVuaXF1aWZ5LWFsaXN0LWtleXMgKCkKKyAgKHNob3VsZCAoZXF1YWwgKHVu aXF1aWZ5LWFsaXN0LWtleXMKKyAgICAgICAgICAgICAgICAgICcoKSkKKyAgICAgICAgICAgICAg ICAgJygpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHVuaXF1aWZ5LWFsaXN0LWtleXMKKyAgICAgICAg ICAgICAgICAgICcoKCJhIiAiQSIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZSIg IkUiKSkpCisgICAgICAgICAgICAgICAgICcoKCJhIiAiQSIpICgiYiIgIkIiKSAoImMiICJDIikg KCJkIiAiRCIpICgiZSIgIkUiKSkpKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktYWxpc3Qt a2V5cworICAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhIiAiQTIiKSAoImIiICJCIikg KCJjIiAiQyIpICgiZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKSkKKyAg ICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhPDI+IiAiQTIiKSAoImIiICJCIikgKCJjIiAi QyIpICgiZCIgIkQiKSAoImQ8Mj4iICJEMiIpICgiZDwzPiIgIkQzIikgKCJlIiAiRSIpKSkpCisg IChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAgICAn KCgiYSIgIkEiKSAoImEiICJBMiIpICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCIg IkQyIikgKCJkIiAiRDMiKSAoImUiICJFIikpCisgICAgICAgICAgICAgICAgICAiKCVkKSIpCisg ICAgICAgICAgICAgICAgICcoKCJhIiAiQSIpICgiYSgyKSIgIkEyIikgKCJiIiAiQiIpICgiYyIg IkMiKSAoImQiICJEIikgKCJkKDIpIiAiRDIiKSAoImQoMykiICJEMyIpICgiZSIgIkUiKSkpKQor ICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktYWxpc3Qta2V5cworICAgICAgICAgICAgICAgICAg YCgoLChwcm9wZXJ0aXplICJhIiAnaWQgMSkgIkEiKSAoLChwcm9wZXJ0aXplICJhIiAnaWQgMikg IkEyIikKKyAgICAgICAgICAgICAgICAgICAgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikg KCJkIiAiRDIiKSAoImQiICJEMyIpICgiZSIgIkUiKSkpCisgICAgICAgICAgICAgICAgIGAoKCwo cHJvcGVydGl6ZSAiYSIgJ2lkIDEpICJBIikgKCwocHJvcGVydGl6ZSAiYTwyPiIgJ2lkIDIpICJB MiIpCisgICAgICAgICAgICAgICAgICAgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJk PDI+IiAiRDIiKSAoImQ8Mz4iICJEMyIpICgiZSIgIkUiKSkpKQorICAoc2hvdWxkIChlcXVhbCAo dW5pcXVpZnktYWxpc3Qta2V5cworICAgICAgICAgICAgICAgICAgJygoMSAiQSIpICgxICJBMiIp ICgyICJCIikgKCJjIiAiQyIpICgiZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAi RSIpKSkKKyAgICAgICAgICAgICAgICAgJygoIjEiICJBIikgKCIxPDI+IiAiQTIiKSAoIjIiICJC IikgKCJjIiAiQyIpICgiZCIgIkQiKSAoImQ8Mj4iICJEMiIpICgiZDwzPiIgIkQzIikgKCJlIiAi RSIpKSkpKQorCiAocHJvdmlkZSAnbWlzYy10ZXN0cykKIDs7OyBtaXNjLXRlc3RzLmVsIGVuZHMg aGVyZQotLSAKMi41Mi4wCgo= --000000000000da10de0649c6f8a0--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 1 Feb 2026 17:53:42 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 01 12:53:42 2026 Received: from localhost ([127.0.0.1]:42521 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vmbdl-00079g-Gi for submit <at> debbugs.gnu.org; Sun, 01 Feb 2026 12:53:41 -0500 Received: from mail-ua1-x92c.google.com ([2607:f8b0:4864:20::92c]:49550) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vmbdi-00079U-MQ for 80283 <at> debbugs.gnu.org; Sun, 01 Feb 2026 12:53:39 -0500 Received: by mail-ua1-x92c.google.com with SMTP id a1e0cc1a2514c-9489bf609bcso374102241.3 for <80283 <at> debbugs.gnu.org>; Sun, 01 Feb 2026 09:53:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769968418; cv=none; d=google.com; s=arc-20240605; b=L/1yaz3K9ijvtJIvve6U/HDU2d5/jgDLZTtziJ8Nk7eThP21sR1SVXdzyi0r71XDAJ utEBzHfY4EZ2BObtK7AOlbWWiffH1Vg8PUEYvvvaW6IWJzb4UDjiF9+aBIH9o7riG32f GoWb96TybXwKlgp7pY76oHWiZuymwe5dvtw+ROJiyfr0SncY0jYm8zblF+MJGRNoNyVw Hl4jDLNy3W+GgnVUB4zrLLFG4kGoNkWtqMDcg0W/kDrBG68ogsX/MEYhI0Qr1p4HBKwX 9cmCSW1eRM7a5910yQR41bwPFp48BR5Zna1ikGqRZvm7FjoJTL3tN0cCUA/VgwkjxClI aG9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Vt4ijUJHMq4GUHF9mwB8YRs9kxP3VMxOkUeVkLNG+rg=; fh=YDUMVpC2/rm0VkTytaZ4krjb3bffP7Zzww8IypRgzmk=; b=gQWSjtaYFoZqcVaLi+nKXpTPFN/dLIh9/omcxOZUorDEk5+f0FxHoMjmlOJZCu/iAe f6gu9blXsdxcbGYIYfHi2CZqO0bRbpTl9APTQeveS8/+svQSqi9PWpd8BmqE2Nptlk7l L/Z1kq7dAMERJ3e2IwVZXlOi0NWvwzjQqrpJGQdzjYRBvINLUf1zjbFFCXXQ5uTbJ340 xdF63hz8ZN0RhkUrJy+2BzJM3GRvbXYjrGLjB/+hiFRsx0/rQoptaDRu7x6YlPwUztpL H1R47odHSN7QW7VxDoxLOS5S+6LD3+mhy8L6rD2wNFhR5MXPzdSWnkJZDVsxyWzZvL0s SCKw==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769968418; x=1770573218; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Vt4ijUJHMq4GUHF9mwB8YRs9kxP3VMxOkUeVkLNG+rg=; b=gHRTbmwy25in9kXnLYB8chyQsQ+nQxlA3Ly5mfynNeTtkjbTvPXXA5dpsZyBmH4HnP IRGDkS1p5bRICPZasraRTgnvUGUd7GB3PSH/XiJxkWfoAB56Oi5hSTCGCRPTnR+PvK/p bT0VgVoZ8uuNN83PbeInpOlUdw73Zp45OydgqfIL3DpJYI4LtD59mDIgZ3cOnBZkIsVD 6E1HrO8LdjdYhcP1b0VUXtKtUPkbcMOBR5u4X/Accrez2b4xqD9GGRg8Ff3Rdkgcqakq 4TFc2yH1g98eq57Pw2XS7UaHlvUv6mpInWViltXgLZuHcfD5icw+by7lXkq/0RI1eIPb ld0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769968418; x=1770573218; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Vt4ijUJHMq4GUHF9mwB8YRs9kxP3VMxOkUeVkLNG+rg=; b=O0uP+FrllZUMuCZqSi9pfLRTNt/xXqs6S2u7/He+B69VkfkW20Iz78WbIwTUmi7iRR i8dlgbnK3sgR1weQRSIf5ynX7uxtgLTH8Na4UdX9oY+e2Yhz77StKHyBNo6uPdCNS7d0 eM2yPDtvQIsT/jPfTYPtvy1YnFQ5cykSWESjZmSvT31OMWWRQOWARWzkom+zM7P9SJvI WExFQDGLwGfPdp/V/r1z84N4/wLpC1pNpO/WGUIrer6fa87FsLoWs+ZQCaMRyv6VghHK mgz1PZPnrhmKWOmBcR0Z3iNey6u3vzHoRWfoW1dLcYAI6crwO9ebCvBGYip6E4c2bZRS +CpA== X-Gm-Message-State: AOJu0YzshMzApIeRbDCbBEmrFq5/JrAvzDO6SlKYDch72JuFisHwq0iL kS/2GxwuIoHIilfWx34wZ7t33vtcb2uv432aaRW2c6ENBb/0VO3/esMYG7H6ep95N0qo5Iovojr 6Qn2c+w/ctgsqYqpFQLdKM2KWzAMGl1M= X-Gm-Gg: AZuq6aJq8szSbdpUSxC2PRwSivCRXlw3E2YpOpf7utiifiT6k4xcyfPnHqLCPr056KZ DY1X+UEfRlcVcHE5DEtnY/eagvRCzDWHPqvKI+hS6sMOAt0xpIiCtN8AVaiCKms5j7XljWZjws9 i+HJ+5NyD5NbZlRU3Y56hBzpVqgpb1zexmX4D7tn1/eVlOvFpsGjxupB4UFiWcMzUTvDQd/Sg7p ULplYauMdyyHIqTdOT7fH5OnWt5WpgJndB2GQOum3ZxE7Gj/NVpxJAZk6tlClG+Buu1vDCfZGac eGHXDhMoBpafrSZndlJkq3h/YAw6NIVZXbtqF2dty5I4sCxgamg= X-Received: by 2002:a05:6102:f0a:b0:5f5:402b:7eda with SMTP id ada2fe7eead31-5f8e24a3121mr2543473137.10.1769968417768; Sun, 01 Feb 2026 09:53:37 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> <87y0lc5q36.fsf@HIDDEN> In-Reply-To: <87y0lc5q36.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 1 Feb 2026 12:53:26 -0500 X-Gm-Features: AZwV_QgrNSYQAnkBr0DpKQZT0RjNYx9OhBodb9Tk4rgi-ABBArYhIrAekmOyeBw Message-ID: <CAN+1HbokCpXuf72fYjiDVdn_Df8xvPr-x2mO63bPz5J0+7fJYg@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Juri Linkov <juri@HIDDEN> Content-Type: multipart/mixed; boundary="000000000000ce376c0649c6e2c7" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: 80283 <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: 0.0 (/) --000000000000ce376c0649c6e2c7 Content-Type: multipart/alternative; boundary="000000000000ce376a0649c6e2c5" --000000000000ce376a0649c6e2c5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 1, 2026 at 12:34=E2=80=AFPM Juri Linkov <juri@HIDDEN> wrote= : > >> I've been using similar functions to assist with `completing-read` > >> cases with duplicate candidates and I'd prefer to use core functions. > >> Juri and I will use these in forthcoming tab-bar.el and frame.el > >> `completing-read` enhancements. > > > > Thanks, we need such function in imenu.el as well. > > This works great for imenu.el: > > diff --git a/lisp/imenu.el b/lisp/imenu.el > index 60b824b9293..483ab2920ee 100644 > --- a/lisp/imenu.el > +++ b/lisp/imenu.el > @@ -924,7 +924,8 @@ imenu-choose-buffer-index > (setq index-alist (if alist alist (imenu--make-index-alist))) > (cond > (imenu-flatten > - (setq index-alist (imenu--flatten-index-alist index-alist t))) > + (setq index-alist (imenu--flatten-index-alist index-alist t)) > + (setq index-alist (uniquify-alist-keys index-alist))) > ((when-let* ((alist (if (eq (car index-alist) imenu--rescan-item) > (cdr index-alist) index-alist)) > (name (caar alist))) > > You can see this by customizing 'imenu-flatten' to 'annotation', > and typing 'M-g i imenu TAB' in imenu.el. Previously, it always > navigated to the first occurrence of 'imenu'. But now due to > disambiguation, "imenu<2>" moves to the second. > > However, "imenu<2>" is placed at the end of the completions buffer. > Would it be possible to specify the format of the suffix, then > "imenu(2)" will be placed after "imenu": > > imenu (Types) > imenu(2) > Try the attached patch. --000000000000ce376a0649c6e2c5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 1, 2026 at 12:34=E2=80=AFPM Juri Linkov <<a href=3D"mailto:j= uri@HIDDEN">juri@HIDDEN</a>> wrote:</span></div></div><div class= =3D"gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" st= yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd= ing-left:1ex">>> I've been using similar functions to assist with= `completing-read`<br> >> cases with duplicate candidates and I'd prefer to use core fun= ctions.<br> >> Juri and I will use these in forthcoming tab-bar.el and frame.el<b= r> >> `completing-read` enhancements.<br> ><br> > Thanks, we need such function in imenu.el as well.<br> <br> This works great for imenu.el:<br> <br> diff --git a/lisp/imenu.el b/lisp/imenu.el<br> index 60b824b9293..483ab2920ee 100644<br> --- a/lisp/imenu.el<br> +++ b/lisp/imenu.el<br> @@ -924,7 +924,8 @@ imenu-choose-buffer-index<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq index-alist (if alist alist (imenu--make-i= ndex-alist)))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0(cond<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 (imenu-flatten<br> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq index-alist (imenu--flatten-index-alist = index-alist t)))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq index-alist (imenu--flatten-index-alist = index-alist t))<br> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq index-alist (uniquify-alist-keys index-a= list)))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((when-let* ((alist (if (eq (car index-alist) i= menu--rescan-item)<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (cdr index-alist) index-alist))<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(name (caar alist)))<br> <br> You can see this by customizing 'imenu-flatten' to 'annotation&= #39;,<br> and typing 'M-g i imenu TAB' in imenu.el.=C2=A0 Previously, it alwa= ys<br> navigated to the first occurrence of 'imenu'.=C2=A0 But now due to<= br> disambiguation, "imenu<2>" moves to the second.<br> <br> However, "imenu<2>" is placed at the end of the completions= buffer.<br> Would it be possible to specify the format of the suffix, then<br> "imenu(2)" will be placed after "imenu":<br> <br> =C2=A0 imenu (Types)<br> =C2=A0 imenu(2)<br></blockquote><div><br></div><div class=3D"gmail_default"= style=3D"font-family:monospace">Try the attached patch.</div></div></div> --000000000000ce376a0649c6e2c5-- --000000000000ce376c0649c6e2c7 Content-Type: application/octet-stream; name="0001-Add-functions-uniquify-strings-and-uniquify-alist-ke.patch" Content-Disposition: attachment; filename="0001-Add-functions-uniquify-strings-and-uniquify-alist-ke.patch" Content-Transfer-Encoding: base64 Content-ID: <f_ml41hli40> X-Attachment-Id: f_ml41hli40 RnJvbSA5OWQwYjE3NTQ5MjE0Zjg1MmFiMjg5ZmU2NGNhNTdlNzU5N2E1Mzg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjkgSmFuIDIwMjYgMTM6MDg6MTQgLTA1MDAK U3ViamVjdDogW1BBVENIXSBBZGQgZnVuY3Rpb25zIHVuaXF1aWZ5LXN0cmluZ3MgYW5kIHVuaXF1 aWZ5LWFsaXN0LWtleXMKIChidWcjODAyODMpCgoqIGxpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwg KHVuaXF1aWZ5LXN0cmluZ3MpOgoodW5pcXVpZnktYWxpc3Qta2V5cyk6IE5ldyBkZWZ1bnMuCiog dGVzdC9saXNwL21pc2MtdGVzdHMuZWwgKG1pc2MtdGVzdC11bmlxdWlmeS1zdHJpbmdzKToKKG1p c2MtdGVzdC11bmlxdWlmeS1hbGlzdC1rZXlzKTogTmV3IHRlc3RzLgoqIGV0Yy9ORVdTOiBBbm5v dW5jZSB0aGUgbmV3IGZ1bmN0aW9ucy4KLS0tCiBldGMvTkVXUyAgICAgICAgICAgICAgICAgIHwg IDkgKysrKysrCiBsaXNwL2VtYWNzLWxpc3Avc3Vici14LmVsIHwgNTkgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbCAgIHwgNDMg KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5kZXggOWQzNmY2YzNk OTYuLjIwNWY1YWEyM2M0IDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAt MzA4OCw2ICszMDg4LDE1IEBAIGRldGVybWluZWQgYnkgdGhlIG5ldyB1c2VyIG9wdGlvbiAncHVs c2UtZmFjZS1kdXJhdGlvbicuCiAKICoqIE1pc2NlbGxhbmVvdXMKIAorLS0tCisqKiogTmV3IGZ1 bmN0aW9ucyAndW5pcXVpZnktc3RyaW5ncycgYW5kICd1bmlxdWlmeS1hbGlzdC1rZXlzJy4KK1Ro ZXNlIGZ1bmN0aW9ucyBhcmUgc2ltaWxhciB0byAnZ2VuZXJhdGUtbmV3LWJ1ZmZlci1uYW1lJy4K Kyd1bmlxdWlmeS1zdHJpbmdzJyByZXR1cm5zIGEgY29weSBvZiBhIHN0cmluZyBsaXN0IHdpdGgg IjxOVU1CRVI+IgorYXBwZW5kZWQgdG8gZHVwbGljYXRlcy4gICd1bmlxdWlmeS1hbGlzdC1rZXlz JyByZXR1cm5zIGEgY29weSBvZiBhbgorYWxpc3Qgd2l0aCAiPE5VTUJFUj4iIGFwcGVuZGVkIHRv IGl0cyBkdXBsaWNhdGUga2V5cy4gIEFsbCBub24tc3RyaW5nCitrZXlzIGFyZSBmaXJzdCBjb252 ZXJ0ZWQgdG8gc3RyaW5ncy4gIEJvdGggZnVuY3Rpb25zIGFjY2VwdCBhbiBvcHRpb25hbAorZm9y bWF0IHN0cmluZyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCAiPE5VTUJFUj4iLgorCiAtLS0KICoq KiBUaGUgZmlyc3QgY2xpZW50IGZyYW1lIG5vdyBzaG93cyB3YXJuaW5ncyBmcm9tIGRhZW1vbiBz dGFydHVwLgogV2hlbiB0aGVyZSBhcmUgd2FybmluZ3MgZW1pdHRlZCBkdXJpbmcgRW1hY3Mgc3Rh cnR1cCwgdXN1YWxseSBkdWUgdG8KZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXgu ZWwgYi9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVsCmluZGV4IDhkMDQ5NTg0ODdmLi45ZjdhNDY2 ZTQwZiAxMDA2NDQKLS0tIGEvbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbAorKysgYi9saXNwL2Vt YWNzLWxpc3Avc3Vici14LmVsCkBAIC01ODUsNiArNTg1LDY1IEBAIGVtYWNzLWV0Yy0taGlkZS1s b2NhbC12YXJpYWJsZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2duIChmb3J3YXJk LWxpbmUgLTEpIChwb2ludCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQtbWF4KSkp KSkKIAorOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biB1bmlxdWlmeS1zdHJpbmdzIChzdHJpbmdzICZv cHRpb25hbCBmb3JtYXQpCisgICJSZXR1cm4gYSBjb3B5IG9mIFNUUklOR1Mgd2l0aCBcIjxOVU1C RVI+XCIgYXBwZW5kZWQgdG8gZHVwbGljYXRlcy4KK1NUUklOR1Mgc2hvdWxkIGJlIGEgbGlzdCBh bmQgbWF5IGhhdmUgdGV4dCBwcm9wZXJ0aWVzIHdoaWNoIHJlbWFpbgoraW50YWN0LgorCitOVU1C RVIgaXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW50ZWdlciBzdGFydGluZyBhdCAyIGZv ciB0aGUgZmlyc3QKK2R1cGxpY2F0ZS4KKworSWYgRk9STUFUIGlzIG5vbi1uaWwsIGl0IGlzIGEg dmFsaWQgZm9ybWF0LWNvbnRyb2wgc3RyaW5nIHBhc3NlZCB0byB0aGUKK2Z1bmN0aW9uIGBmb3Jt YXQnLCBhbmQgY29udGFpbmluZyBhIHNpbmdsZSBlbWJlZGRlZCBcIiVkXCIuICBJdCBkZWZhdWx0 cwordG8gXCI8JWQ+XCIuCisKK1RoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBgZ2VuZXJhdGUt bmV3LWJ1ZmZlci1uYW1lJyBidXQgZm9yIHN0cmluZworbGlzdHMuIgorICAobGV0ICgodW5pcXVl cykKKyAgICAgICAgKGh0IChtYWtlLWhhc2gtdGFibGUgOnNpemUgKGxlbmd0aCBzdHJpbmdzKSA6 dGVzdCAjJ2VxdWFsKSkpCisgICAgKGRvbGlzdCAoc3RyaW5nIHN0cmluZ3MpCisgICAgICAobGV0 KiAoKHVuaXF1ZS1rZXkgc3RyaW5nKSA7IExlYXZlIHByb3BlcnRpZXMgaW50YWN0LgorICAgICAg ICAgICAgIChrZXkgKHN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0cmluZykpCisgICAgICAgICAg ICAgKGNvdW50IChnZXRoYXNoIGtleSBodCkpKQorICAgICAgICAod2hlbiBjb3VudAorICAgICAg ICAgIChzZXRxIGNvdW50ICgxKyBjb3VudCkpCisgICAgICAgICAgKHNldHEgdW5pcXVlLWtleSAo Zm9ybWF0IChjb25jYXQgIiVzIiAob3IgZm9ybWF0ICI8JWQ+IikpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuaXF1ZS1rZXkgY291bnQpKSkKKyAgICAgICAgKHB1c2ggdW5p cXVlLWtleSB1bmlxdWVzKQorICAgICAgICAocHV0aGFzaCBrZXkgKG9yIGNvdW50IDEpIGh0KSkp CisgICAgKG5yZXZlcnNlIHVuaXF1ZXMpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biB1bmlx dWlmeS1hbGlzdC1rZXlzIChhbGlzdCAmb3B0aW9uYWwgZm9ybWF0KQorICAiUmV0dXJuIGEgY29w eSBvZiBBTElTVCB3aXRoIFwiPE5VTUJFUj5cIiBhcHBlbmRlZCB0byBkdXBsaWNhdGUga2V5cy4K K0FMSVNUIGtleXMgc2hvdWxkIGJlIHN0cmluZ3MgYW5kIG1heSBoYXZlIHRleHQgcHJvcGVydGll cyB3aGljaCByZW1haW4KK2ludGFjdC4gIE5vbi1zdHJpbmcga2V5cyBhcmUgY29udmVydGVkIHRv IHN0cmluZ3MuCisKK05VTUJFUiBpcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBpbnRlZ2Vy IHN0YXJ0aW5nIGF0IDIgZm9yIHRoZSBmaXJzdAorZHVwbGljYXRlLgorCitJZiBGT1JNQVQgaXMg bm9uLW5pbCwgaXQgaXMgYSB2YWxpZCBmb3JtYXQtY29udHJvbCBzdHJpbmcgcGFzc2VkIHRvIHRo ZQorZnVuY3Rpb24gYGZvcm1hdCcsIGFuZCBjb250YWluaW5nIGEgc2luZ2xlIGVtYmVkZGVkIFwi JWRcIi4gIEl0IGRlZmF1bHRzCit0byBcIjwlZD5cIi4KKworVGhpcyBmdW5jdGlvbiBpcyBzaW1p bGFyIHRvIGBnZW5lcmF0ZS1uZXctYnVmZmVyLW5hbWUnIGJ1dCBmb3IgYWxpc3RzLiIKKyAgKGxl dCAoKHVuaXF1ZXMpCisgICAgICAgIChodCAobWFrZS1oYXNoLXRhYmxlIDpzaXplIChsZW5ndGgg YWxpc3QpIDp0ZXN0ICMnZXF1YWwpKSkKKyAgICAoZG9saXN0IChlbHQgYWxpc3QpCisgICAgICAo bGV0KiAoKGtleSAoY2FyIGVsdCkpCisgICAgICAgICAgICAgKGtleSAoaWYgKHN0cmluZ3Aga2V5 KSBrZXkgKGZvcm1hdCAiJVMiIGtleSkpKQorICAgICAgICAgICAgICh1bmlxdWUta2V5IGtleSkg OyBMZWF2ZSBwcm9wZXJ0aWVzIGludGFjdC4KKyAgICAgICAgICAgICAoa2V5IChzdWJzdHJpbmct bm8tcHJvcGVydGllcyBrZXkpKQorICAgICAgICAgICAgIChjb3VudCAoZ2V0aGFzaCBrZXkgaHQp KSkKKyAgICAgICAgKHdoZW4gY291bnQKKyAgICAgICAgICAoc2V0cSBjb3VudCAoMSsgY291bnQp KQorICAgICAgICAgIChzZXRxIHVuaXF1ZS1rZXkgKGZvcm1hdCAoY29uY2F0ICIlcyIgKG9yIGZv cm1hdCAiPCVkPiIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUt a2V5IGNvdW50KSkpCisgICAgICAgIChwdXNoIChjb25zIHVuaXF1ZS1rZXkgKGNkciBlbHQpKSB1 bmlxdWVzKQorICAgICAgICAocHV0aGFzaCBrZXkgKG9yIGNvdW50IDEpIGh0KSkpCisgICAgKG5y ZXZlcnNlIHVuaXF1ZXMpKSkKKwogKHByb3ZpZGUgJ3N1YnIteCkKIAogOzs7IHN1YnIteC5lbCBl bmRzIGhlcmUKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9taXNjLXRlc3RzLmVsIGIvdGVzdC9saXNw L21pc2MtdGVzdHMuZWwKaW5kZXggYjZmNWYwMWFkMmEuLjAzYmU4NTg4ZDNmIDEwMDY0NAotLS0g YS90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbApA QCAtMjQzLDUgKzI0Myw0OCBAQCBtaXNjLXRlc3Qtc3RyaW5nLXBpeGVsLXdpZHRoLWRpc3BsYXkt bGluZS1udW1iZXJzCiAgICAgICAoc2V0cS1kZWZhdWx0IGRpc3BsYXktbGluZS1udW1iZXJzIGRs bikpCiAgICAgKHNob3VsZCAoPSB3MCB3MSkpKSkKIAorKGVydC1kZWZ0ZXN0IG1pc2MtdGVzdC11 bmlxdWlmeS1zdHJpbmdzICgpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1zdHJpbmdzCisg ICAgICAgICAgICAgICAgICAnKCkpCisgICAgICAgICAgICAgICAgICcoKSkpCisgIChzaG91bGQg KGVxdWFsICh1bmlxdWlmeS1zdHJpbmdzCisgICAgICAgICAgICAgICAgICAnKCJhIiAiYiIgImMi ICJkIiAiZSIpKQorICAgICAgICAgICAgICAgICAgJygiYSIgImIiICJjIiAiZCIgImUiKSkpCisg IChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1zdHJpbmdzCisgICAgICAgICAgICAgICAgICAnKCJh IiAiYSIgImIiICJjIiAiZCIgImQiICJkIiAiZSIpKQorICAgICAgICAgICAgICAgICAnKCJhIiAi YTwyPiIgImIiICJjIiAiZCIgImQ8Mj4iICJkPDM+IiAiZSIpKSkKKyAgKHNob3VsZCAoZXF1YWwg KHVuaXF1aWZ5LXN0cmluZ3MKKyAgICAgICAgICAgICAgICAgICcoImEiICJhIiAiYiIgImMiICJk IiAiZCIgImQiICJlIikKKyAgICAgICAgICAgICAgICAgICIoJWQpIikKKyAgICAgICAgICAgICAg ICAgJygiYSIgImEoMikiICJiIiAiYyIgImQiICJkKDIpIiAiZCgzKSIgImUiKSkpCisgIChzaG91 bGQgKGVxdWFsICh1bmlxdWlmeS1zdHJpbmdzCisgICAgICAgICAgICAgICAgICBgKCwocHJvcGVy dGl6ZSAiYSIgJ2lkIDEpICwocHJvcGVydGl6ZSAiYSIgJ2lkIDIpICJhIgorICAgICAgICAgICAg ICAgICAgICAiYiIgImMiICJkIiAiZCIgImQiICJlIikpCisgICAgICAgICAgICAgICAgIGAoLChw cm9wZXJ0aXplICJhIiAnaWQgMSkgLChwcm9wZXJ0aXplICJhPDI+IiAnaWQgMikgImE8Mz4iCisg ICAgICAgICAgICAgICAgICAgImIiICJjIiAiZCIgImQ8Mj4iICJkPDM+IiAiZSIpKSkpCisKKyhl cnQtZGVmdGVzdCBtaXNjLXRlc3QtdW5pcXVpZnktYWxpc3Qta2V5cyAoKQorICAoc2hvdWxkIChl cXVhbCAodW5pcXVpZnktYWxpc3Qta2V5cworICAgICAgICAgICAgICAgICAgJygpKQorICAgICAg ICAgICAgICAgICAnKCkpKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktYWxpc3Qta2V5cwor ICAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJE IikgKCJlIiAiRSIpKSkKKyAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJiIiAiQiIpICgi YyIgIkMiKSAoImQiICJEIikgKCJlIiAiRSIpKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlm eS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImEiICJBMiIpICgi YiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCIgIkQyIikgKCJkIiAiRDMiKSAoImUiICJF IikpKQorICAgICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImE8Mj4iICJBMiIpICgiYiIgIkIi KSAoImMiICJDIikgKCJkIiAiRCIpICgiZDwyPiIgIkQyIikgKCJkPDM+IiAiRDMiKSAoImUiICJF IikpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHVuaXF1aWZ5LWFsaXN0LWtleXMKKyAgICAgICAgICAg ICAgICAgICcoKCJhIiAiQSIpICgiYSIgIkEyIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJE IikgKCJkIiAiRDIiKSAoImQiICJEMyIpICgiZSIgIkUiKSkKKyAgICAgICAgICAgICAgICAgICIo JWQpIikKKyAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJhKDIpIiAiQTIiKSAoImIiICJC IikgKCJjIiAiQyIpICgiZCIgIkQiKSAoImQoMikiICJEMiIpICgiZCgzKSIgIkQzIikgKCJlIiAi RSIpKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAg ICAgICAgICBgKCgsKHByb3BlcnRpemUgImEiICdpZCAxKSAiQSIpICgsKHByb3BlcnRpemUgImEi ICdpZCAyKSAiQTIiKQorICAgICAgICAgICAgICAgICAgICAoImIiICJCIikgKCJjIiAiQyIpICgi ZCIgIkQiKSAoImQiICJEMiIpICgiZCIgIkQzIikgKCJlIiAiRSIpKSkKKyAgICAgICAgICAgICAg ICAgYCgoLChwcm9wZXJ0aXplICJhIiAnaWQgMSkgIkEiKSAoLChwcm9wZXJ0aXplICJhPDI+IiAn aWQgMikgIkEyIikKKyAgICAgICAgICAgICAgICAgICAoImIiICJCIikgKCJjIiAiQyIpICgiZCIg IkQiKSAoImQ8Mj4iICJEMiIpICgiZDwzPiIgIkQzIikgKCJlIiAiRSIpKSkpCisgIChzaG91bGQg KGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlzCisgICAgICAgICAgICAgICAgICAnKCgxICJBIikg KDEgIkEyIikgKDIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCIgIkQyIikgKCJkIiAiRDMi KSAoImUiICJFIikpKQorICAgICAgICAgICAgICAgICAnKCgiMSIgIkEiKSAoIjE8Mj4iICJBMiIp ICgiMiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZDwyPiIgIkQyIikgKCJkPDM+IiAiRDMi KSAoImUiICJFIikpKSkpCisKIChwcm92aWRlICdtaXNjLXRlc3RzKQogOzs7IG1pc2MtdGVzdHMu ZWwgZW5kcyBoZXJlCi0tIAoyLjUyLjAKCg== --000000000000ce376c0649c6e2c7--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
Received: (at 80283) by debbugs.gnu.org; 1 Feb 2026 17:34:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 01 12:34:40 2026
Received: from localhost ([127.0.0.1]:42280 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vmbLM-0005O4-6c
for submit <at> debbugs.gnu.org; Sun, 01 Feb 2026 12:34:40 -0500
Received: from mout-p-201.mailbox.org ([80.241.56.171]:36454)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vmbLJ-0005Nd-BW
for 80283 <at> debbugs.gnu.org; Sun, 01 Feb 2026 12:34:38 -0500
Received: from smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
(No client certificate requested)
by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4f3xh5337Jz9tcR;
Sun, 1 Feb 2026 18:34:29 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001;
t=1769967269;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=yX//8m+ySjaoZ4FV1CULjjkKyBSFtX2sw2pKC9JVXaI=;
b=fAlLohOts1LSljAD5+tP+moHGgIEPeHBGepAdPMjuDdp2obF9rv4jqYlEYXCVqjJepA5ZH
M8xlkQEK5Rx0brm46a08olMpCRUJsxQx7bri2gAPR30tT+GvuLjmj2Sl6qV3kF+70x/+EE
iQKRKccbzA61RoBh2dEY5tfrwdy2mWxZIAAvmp+y+3wUC+27WY85TbnmuACUUfrZaCNdaw
ZXr8XF9XqurUOoVZOwbpWOeZol+ZfW5pwUatPO9tKwMkYmBqvYMHX8D0emSNoA1xskSxN4
lNVW6uDNYnvdTfLTr8kCjMeAkxILlkEwvly2JBeKf0mZmZdvIddogMcbDF96Bw==
From: Juri Linkov <juri@HIDDEN>
To: =?iso-8859-1?Q?St=E9phane?= Marks <shipmints@HIDDEN>
Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and
uniquify-alist-keys
In-Reply-To: <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN>
Organization: LINKOV.NET
References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN>
<87pl6ogao5.fsf@HIDDEN>
<CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN>
Date: Sun, 01 Feb 2026 19:30:21 +0200
Message-ID: <87y0lc5q36.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80283
Cc: 80283 <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 (-)
>> I've been using similar functions to assist with `completing-read`
>> cases with duplicate candidates and I'd prefer to use core functions.
>> Juri and I will use these in forthcoming tab-bar.el and frame.el
>> `completing-read` enhancements.
>
> Thanks, we need such function in imenu.el as well.
This works great for imenu.el:
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 60b824b9293..483ab2920ee 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -924,7 +924,8 @@ imenu-choose-buffer-index
(setq index-alist (if alist alist (imenu--make-index-alist)))
(cond
(imenu-flatten
- (setq index-alist (imenu--flatten-index-alist index-alist t)))
+ (setq index-alist (imenu--flatten-index-alist index-alist t))
+ (setq index-alist (uniquify-alist-keys index-alist)))
((when-let* ((alist (if (eq (car index-alist) imenu--rescan-item)
(cdr index-alist) index-alist))
(name (caar alist)))
You can see this by customizing 'imenu-flatten' to 'annotation',
and typing 'M-g i imenu TAB' in imenu.el. Previously, it always
navigated to the first occurrence of 'imenu'. But now due to
disambiguation, "imenu<2>" moves to the second.
However, "imenu<2>" is placed at the end of the completions buffer.
Would it be possible to specify the format of the suffix, then
"imenu(2)" will be placed after "imenu":
imenu (Types)
imenu(2)
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 1 Feb 2026 12:26:37 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 01 07:26:37 2026 Received: from localhost ([127.0.0.1]:37980 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vmWXE-0000Xx-Sx for submit <at> debbugs.gnu.org; Sun, 01 Feb 2026 07:26:37 -0500 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]:61520) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vmWXC-0000Xk-AT for 80283 <at> debbugs.gnu.org; Sun, 01 Feb 2026 07:26:35 -0500 Received: by mail-vs1-xe29.google.com with SMTP id ada2fe7eead31-5f526c39718so2147405137.2 for <80283 <at> debbugs.gnu.org>; Sun, 01 Feb 2026 04:26:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769948793; cv=none; d=google.com; s=arc-20240605; b=AOwf94ki9nKN8nmIAqiK7tp8vVTQjNw3xwfN5QbPQPW5g1vbh9FlMYxAHNAZQHIQFt j2yk6bIy5xp8RUdAgZv9I6VmOWTSarN9CQHvU2UVutVwjz5wQg15WmVLLER3wQRGsesf RCHap1a77dkqMiSjtPCXaEVcZmMdUQJv+svz4CeFZknJeRFNDdCpiCowas5ud1jL1jzF 9v1Ix3LLekgdPnBOC8J6JBg6/TA4oMHQo96bEuh/k3cvLciiS9Z3O5S9pnoewH84ckMn UkXP0eEcG0vjyLcFBMbsbpMXnuBA+DE6hBFAK9iuX/7hczUnO6R3TkmA2MvnakpLxag2 ENpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=HkY4Iz8mq7g2BKHwiSh4XGPWzYJtdMLY6jpJhaK8490=; fh=YDUMVpC2/rm0VkTytaZ4krjb3bffP7Zzww8IypRgzmk=; b=Ya6hQrhhj2OLau8bgsPvkdt5hSMlL8AAT2+Q2pkhAE+VNmDq6ZlVrVngtxbvNqk9TC GCnkrSeq7+ZlJj1MzrW2Z1AE7hWUNpmDLxS4pLwzzG/Aqg2c68hZrmmAAZhMgLCkX4X3 FL3aOocziLyd3fsqiuf/Lu+l3fB3hqKBRxcFY9xTmu2hEBwVafGU9Qm8l1UNcqGcnFEJ E6rdLLZLKIWvkHzUGJAie5uU/c0FjMF7O2L8UrG1Am6aEJ4iPeGVTyhQNh5tuJJ7WdVR ln/6twipmwDuLszZAzoW/T2smRUIHcaXXAKGXAeveOmBk4LqxBp3LbDk+r++Hm54Jq9B pkRA==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769948793; x=1770553593; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=HkY4Iz8mq7g2BKHwiSh4XGPWzYJtdMLY6jpJhaK8490=; b=JE+g3G+P4Pj/rsaB27xv4lZ4HNpNGVTrzmMoFdQKYfl2OqqAdjTTYCInVTbAZsyK1q 224PgJ7+Q0E+hS8alAbGYqnIX4T3PzsQJOr1Qa8FfnYBGqiwdsaOBLHavHjLwTx0ezbt cq9pb13WUyJSijDPexsEixp7wdEPMdBqm2hagE5ENqA3AFct6lP/J0I8W9Qi+80LFsX3 o4xCfh7ID4FPAd2GvT+Gbk3PqjIkSOgK+kGaJVBej94y8jQ5/p9HVJGLuk/01vAorJR/ uyYmGKOtyVhbsgKvoAasXOioE2OMlyqNyzAFVKDTRdEf8e6bmfqdPNWVVLzLYx8LhNCY 2vqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769948793; x=1770553593; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=HkY4Iz8mq7g2BKHwiSh4XGPWzYJtdMLY6jpJhaK8490=; b=bHbaKXppzpoS2vZELf+bUvQKhjR7Cewr/pW1qDsiGLFxNDlqAgAFtE2h8JWPDzfB0D F3/8UutN5fbNEhuKbYbRDIby1dZyoM0boVricy/u3S4ZOwjTfhbM9kBmmbb/VUbfyqci R5bodVxz0it6R2CmMlFRXRbZzyNQZOhEEQzcCyV8a0B/tdArUUkEy2S5Ude4ZhbeQqww bTG3gbx+4C3Bypa7Aafb/z0w+8G3IffAaCu8A3KErTuzVGlaQPscV6vyCSmeLqbreO2E NWzC/Sk1ntpB/AK4DQacLN4hGfzKgCuFqPN3KQTpjvmSJ/Za+EE7h1Mx9hjgxKDg3MUd 6tBQ== X-Gm-Message-State: AOJu0Ywy8DeyznTaxeCpHHUePJa9MXwErvUO49G3O1sn/N1ksbwGId2w bmZkceQ4tgfIPhMOhANKutj0VnfKuVMrwcwXjayEYLzo8JziE796vSPtinXFtpJn/KfSVzXapTD hPBqWrtLlmtAxTcZiUobrr3LAkXPoVHhm7NvK X-Gm-Gg: AZuq6aIGhK3bgpD2fSIAS+eOC4pVoDEBTLKhdWArYdaC2054GH0/Uc8fktiP7gybbR4 yKb1mdaLNiEE7cO4RcZ9E36HDDjX1Xm6TcqcB6sl7zE1l4Mgccpo6n2/ApimkGsNAOSNLERqVb+ nbPw71LKMrzutc5PYKcLLVcgc2j7beV2Rt25p6kNIjsHTBtxgccIDqD90grJlNwX/r3lBrL4w0f z5WHPBJtMkwQRfUCUAWjd7PV5uP1ObcROQLHZBRHi+YAFlKcyuYShMy5k13z3J5rxKQyrikVqNt 1ApLEibzb74goZuadO78FB0HgWr3c5PQgGHW9cKOebvIBcu6wP8= X-Received: by 2002:a05:6102:6d3:b0:5f7:2419:e94d with SMTP id ada2fe7eead31-5f8e2463a66mr2393723137.9.1769948793429; Sun, 01 Feb 2026 04:26:33 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> <87pl6ogao5.fsf@HIDDEN> In-Reply-To: <87pl6ogao5.fsf@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Sun, 1 Feb 2026 07:26:22 -0500 X-Gm-Features: AZwV_Qh65MM6ZQ3enSl5QtYftIRI87z91qfjeTu15_oBFuMq8avNku_AFo98Wwg Message-ID: <CAN+1HboPOESWL=81OgBzYezu07ceQbPMzCYWQC6ykjd3=KYJwA@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: Juri Linkov <juri@HIDDEN> Content-Type: multipart/alternative; boundary="0000000000001a64600649c25182" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: 80283 <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: 0.0 (/) --0000000000001a64600649c25182 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Feb 1, 2026 at 3:00=E2=80=AFAM Juri Linkov <juri@HIDDEN> wrote: > > These functions are similar to 'generate-new-buffer-name'. > > They look more similar to 'create-file-buffer' that uses > 'uniquify--create-file-buffer-advice'. > > Or '(uniquify-get-unique-names buffers)'. > > OTOH, they don't belong to uniquify.el, because > 'uniquify-strings' uniquifies strings, but not buffer names. > Their behavior matches 'generate-new-buffer-name' more than it does the various 'uniquify-buffer-name-style' options. > 'uniquify-strings' returns a copy of a string list with "<NUMBER>" > > appended to duplicates. 'uniquify-alist-keys' returns a copy of an > > alist with "<NUMBER>" appended to its duplicate keys. All non-string > > keys are first converted to strings. > > It seems 'uniquify-alist-keys' is much more useful since it preserves > the original string identities. > In 'uniquify-strings', the list order is maintained and the index into it and the original is a useful identity. > > I've been using similar functions to assist with `completing-read` > > cases with duplicate candidates and I'd prefer to use core functions. > > Juri and I will use these in forthcoming tab-bar.el and frame.el > > `completing-read` enhancements. > > Thanks, we need such function in imenu.el as well. > > > Despite the name prefixes being 'uniquify-', I put these into subr-x.el= . > > subr-x.el looks like the right place since there are other string-related > functions. > Cool. Let's see what others have to say. --0000000000001a64600649c25182 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon= t-family:monospace"><span style=3D"font-family:Arial,Helvetica,sans-serif">= On Sun, Feb 1, 2026 at 3:00=E2=80=AFAM Juri Linkov <<a href=3D"mailto:ju= ri@HIDDEN">juri@HIDDEN</a>> wrote:</span></div></div><div class= =3D"gmail_quote gmail_quote_container"><blockquote class=3D"gmail_quote" st= yle=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padd= ing-left:1ex">> These functions are similar to 'generate-new-buffer-= name'.<br> <br> They look more similar to 'create-file-buffer' that uses<br> 'uniquify--create-file-buffer-advice'.<br> <br> Or '(uniquify-get-unique-names buffers)'.<br> <br> OTOH, they don't belong to uniquify.el, because<br> 'uniquify-strings' uniquifies strings, but not buffer names.<br></b= lockquote><div><br></div><div><div class=3D"gmail_default" style=3D"font-fa= mily:monospace">Their behavior matches 'generate-new-buffer-name' m= ore than it does the various 'uniquify-buffer-name-style' options.<= /div></div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin= :0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"= > > 'uniquify-strings' returns a copy of a string list with "= <NUMBER>"<br> > appended to duplicates. 'uniquify-alist-keys' returns a copy o= f an<br> > alist with "<NUMBER>" appended to its duplicate keys.= =C2=A0 All non-string<br> > keys are first converted to strings.<br> <br> It seems 'uniquify-alist-keys' is much more useful since it preserv= es<br> the original string identities.<br></blockquote><div><br></div><div><div cl= ass=3D"gmail_default" style=3D"font-family:monospace">In 'uniquify-stri= ngs', the list order is maintained and the index into it and the origin= al is a useful identity.</div></div><div>=C2=A0</div><blockquote class=3D"g= mail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204= ,204,204);padding-left:1ex"> > I've been using similar functions to assist with `completing-read`= <br> > cases with duplicate candidates and I'd prefer to use core functio= ns.<br> > Juri and I will use these in forthcoming tab-bar.el and frame.el<br> > `completing-read` enhancements.<br> <br> Thanks, we need such function in imenu.el as well.<br> <br> > Despite the name prefixes being 'uniquify-', I put these into = subr-x.el.<br> <br> subr-x.el looks like the right place since there are other string-related<b= r> functions.<br></blockquote><div><br></div><div class=3D"gmail_default" styl= e=3D"font-family:monospace">Cool.=C2=A0 Let's see what others have to s= ay.</div></div></div> --0000000000001a64600649c25182--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 1 Feb 2026 07:59:12 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 01 02:59:12 2026 Received: from localhost ([127.0.0.1]:35586 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vmSMR-0004pk-Ph for submit <at> debbugs.gnu.org; Sun, 01 Feb 2026 02:59:12 -0500 Received: from mout-p-103.mailbox.org ([2001:67c:2050:0:465::103]:43346) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1vmSMO-0004oz-Ny for 80283 <at> debbugs.gnu.org; Sun, 01 Feb 2026 02:59:10 -0500 Received: from smtp102.mailbox.org (smtp102.mailbox.org [10.196.197.102]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4f3hw16qLdz9tkC; Sun, 1 Feb 2026 08:58:57 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linkov.net; s=MBO0001; t=1769932738; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=LRSRMwCOcwy6+PW35DKVImogKBz08TVKULsf5zi/nZM=; b=y8oCVZIwTcWz3lCAAMkCd1ryj0aaMbq6vEAu8GPEza/XJSdPb7a6BQ+aBcIO7f0oJwbEY+ IsT7csnTI6zX3Jx17HvFYst5fYQQHjGUdDlrsAGEF1iIZGtGIjDGRQbb5TJqPC1RQAdsfe kCq5XdEaMam2nEMgAaARUMDs/FBghcmxUVOgtCVREwXKY23qb+xZYKCbjrkd00QKEujH8Z og81cPwhQrGHA1y3GOoynhxzqgRe4fjGpDVVw4H7AB3K3cohi2/2gzjCM32PGhcgxFvnyZ aq6aBFE22gHdM6YFAH1nqOceCMG9f0LfrQdEBeQ4f/ztwZmEyHdvPRiFxoBHXw== From: Juri Linkov <juri@HIDDEN> To: =?iso-8859-1?Q?St=E9phane?= Marks <shipmints@HIDDEN> Subject: Re: [PATCH] Add functions uniquify-strings and uniquify-alist-keys In-Reply-To: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> Organization: LINKOV.NET References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> Date: Sun, 01 Feb 2026 09:55:38 +0200 Message-ID: <87pl6ogao5.fsf@HIDDEN> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80283 Cc: 80283 <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 (-) > These functions are similar to 'generate-new-buffer-name'. They look more similar to 'create-file-buffer' that uses 'uniquify--create-file-buffer-advice'. Or '(uniquify-get-unique-names buffers)'. OTOH, they don't belong to uniquify.el, because 'uniquify-strings' uniquifies strings, but not buffer names. > 'uniquify-strings' returns a copy of a string list with "<NUMBER>" > appended to duplicates. 'uniquify-alist-keys' returns a copy of an > alist with "<NUMBER>" appended to its duplicate keys. All non-string > keys are first converted to strings. It seems 'uniquify-alist-keys' is much more useful since it preserves the original string identities. > I've been using similar functions to assist with `completing-read` > cases with duplicate candidates and I'd prefer to use core functions. > Juri and I will use these in forthcoming tab-bar.el and frame.el > `completing-read` enhancements. Thanks, we need such function in imenu.el as well. > Despite the name prefixes being 'uniquify-', I put these into subr-x.el. subr-x.el looks like the right place since there are other string-related functions.
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at 80283) by debbugs.gnu.org; 29 Jan 2026 18:17:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 29 13:17:39 2026 Received: from localhost ([127.0.0.1]:59887 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vlWaJ-0003rn-2u for submit <at> debbugs.gnu.org; Thu, 29 Jan 2026 13:17:39 -0500 Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:56734) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vlWaG-0003rf-NB for 80283 <at> debbugs.gnu.org; Thu, 29 Jan 2026 13:17:37 -0500 Received: by mail-vs1-xe30.google.com with SMTP id ada2fe7eead31-5f530da3a07so778559137.1 for <80283 <at> debbugs.gnu.org>; Thu, 29 Jan 2026 10:17:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769710656; cv=none; d=google.com; s=arc-20240605; b=LgyBm/gL+MXTbD3BN1qts2OSCh4Eal01TDxptFB7bCVxXRgvv92zkz1c+bZFanv6mQ +T5RTInLZJFWig/HcQzkU/O1YLXQXMjpyq2NDwV7Qmsw4wEqjf9AfytmRwaN683rsAlW 3RCDUNQ33K3erzP+IoAABTD2Rpg6UbkM1DlR4mW3SHcY47oOBnZ72mmcy9HGvgvdkPYi rpEgYClhAbxYHnYngNStqWePOklELP0CDlJ1fI/FimYlDmNh9CYn5vSypkGqry9MSuB4 QmiMxXIh1wz9MDUyK9NhmNX9YbxNPRIlYUmLIJNAHObPvwDe2kToYbQeN1j3FNkjvjKv AnHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=KApbzPoC+M2PbUugkcGeNHKDM8KLaoAJJnx9FQJeJ2c=; fh=sowby+vjIC6KHxjycDU7jQPw+njs716RwimpXGm7hoY=; b=VFYSB82sk3XGeiGn49ciYF9rrvPDa8imshyb1sNy3Dhbt5i10PauEy7z5kOJnQTJb3 M4gB/CDVVfHV3q1xWta3I2vtgZok2r15qgvCWHls0HD232hUH02VRLOuy+JkynuBGXli H2BJWDMkbVGymzQHkGbb8bWhlePsaT1UfEh/rIP5RVzZwIXELSZ59Bxq6TwBIAvYhM7F 7Ul14of49RiYEeDvlcjf20MkGWnLrO6U0naegnqYvdrLIobHKSG4nwdtzLWdUcrIvWEX wDdNb3njOKJAPJa73vjJR1e+okSk8VbegUEvHpSjCQBXF++jxSCFEJ01suznQRUrrkvt NLrQ==; darn=debbugs.gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769710656; x=1770315456; darn=debbugs.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=KApbzPoC+M2PbUugkcGeNHKDM8KLaoAJJnx9FQJeJ2c=; b=BchoTFzlrJVtXH0/CIVsdyvFC0/VmPhPz+NbXjbCUOyt630fJPC8C03vhBj/eEKo/n qZfMX0MgE1TazJh+RsbggAhaoac4IlgBM6LBbyLVgpVy6L/yGseWABvjN0VeBtCtk/x4 TGWZqXiOuvFLUxaFiy9ftr2Ap0zITeqh54xhG/8m/RlEmjc0b/y5kYe5dU1vXB56SSmO MhuMsILORCg29xQnbou5vwWqagK4k7V9M9YM77VqLEljLwNpf1hOcEDXwejJGkXGJq5f vCqyJnnlAT0XdjDE6HWfybuz4z6eEw1RRnboTPc0QjrxlS4GJsZSOqiYCUOF0GoNzbrs j0gA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769710656; x=1770315456; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=KApbzPoC+M2PbUugkcGeNHKDM8KLaoAJJnx9FQJeJ2c=; b=RalzyR1FfObK8oM9omw+7Gq15TTH6GlQI5x1hg9neVNqCGXEDfC4wRVaYlCHTTsT/S 3aWBu9Ekiqrvsf8aPHKTCk2AuqsM3IMlqnqBfyGB0Jkw283ttHOJ+NldN7lpaq1Rr2GD eNbm1dj/2q5vcGoJ2/9KuJ6/pSAmvmGNw7fhliz1UGHuDDqkU/2ShD84UiIyjXY+0EiB dyPJtV8NI1YD45ACOTbFAa4nf3+ByN0s6aLTU4cQRshPfLJ99u1zkDizpMSGrFdv2w1z /8Cax6U7ksN+tiPLgelLtzWC8kV4/nOReuLqUPgVLbL5SsMKSAz8AmYmO5eGRPiCvZaz HhiA== X-Gm-Message-State: AOJu0YxrvtK/BqAzN72rOyyAt9Yr7kwnPItbX8SD60uffTrRU6XIqksO 6jOsNz58spcBthK/JoZ+TrUdP/5wwQNg0xzMwvpInwH+pYDh9xg0/LbCmvUM5gU/GA/vtAHhf7q IuCnpAEsu5aBb4ZgRvIu6q2T/E52JbrllZQ== X-Gm-Gg: AZuq6aKO0g2XouQ4aICjx0ctuccSi2da1puEhhZ6K4gvLj7FRBOOMCT+qPkl1YIvUXu yRrg0JxwoGAcWA/TSPX/pzUdy5GbsURVBptf+JhPWDHAPc3Rva9zCDoPsQwkYM4MoyWg7y49jOr 14CWLtmlvl7djELLEO+ZlPq5H9aGXQZNQEuyr+EtMMUwAZV/gslkazOEXKKwB22LATV/m2bB3IQ ZkVRNNku2f8GLOjf6iDdVYNSSyUi1EOtGRJEBqoe/JHz95UyUYS+cO6Xwc78+f/QVEenltzanTv lJXGsai3Rl9oA7tfgciD12cyBA68zHdfqx6bDrXE2OHPIei0lZSb3cLbBRKZEw== X-Received: by 2002:a05:6102:3054:b0:5f5:33c9:c9b7 with SMTP id ada2fe7eead31-5f8e26c44ecmr142766137.41.1769710655728; Thu, 29 Jan 2026 10:17:35 -0800 (PST) MIME-Version: 1.0 References: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> In-Reply-To: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 29 Jan 2026 13:17:21 -0500 X-Gm-Features: AZwV_QjLkfc38zBMbBfJaDR08Uw216Z6zYsR4_DXuw48EDZoaIkB7uvns53eH4g Message-ID: <CAN+1Hbr6kc5Ph7HBKEnN07iTxy_oSvUYpRApKPxYOXxVBzhgxA@HIDDEN> Subject: Re: bug#80283: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: 80283 <at> debbugs.gnu.org Content-Type: multipart/mixed; boundary="000000000000fdc1a206498ade62" X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 80283 Cc: Juri Linkov <juri@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: 0.0 (/) --000000000000fdc1a206498ade62 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jan 29, 2026 at 1:16=E2=80=AFPM St=C3=A9phane Marks <shipmints@gmai= l.com> wrote: > > These functions are similar to 'generate-new-buffer-name'. > 'uniquify-strings' returns a copy of a string list with "<NUMBER>" > appended to duplicates. 'uniquify-alist-keys' returns a copy of an > alist with "<NUMBER>" appended to its duplicate keys. All non-string > keys are first converted to strings. > > I've been using similar functions to assist with `completing-read` > cases with duplicate candidates and I'd prefer to use core functions. > Juri and I will use these in forthcoming tab-bar.el and frame.el > `completing-read` enhancements. > > Despite the name prefixes being 'uniquify-', I put these into subr-x.el. > > Patch incoming as soon as a bug number is assigned. Patch attached. --000000000000fdc1a206498ade62 Content-Type: application/octet-stream; name="0001-Add-functions-uniquify-strings-and-uniquify-alist-ke.patch" Content-Disposition: attachment; filename="0001-Add-functions-uniquify-strings-and-uniquify-alist-ke.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mkzs0t3l0> X-Attachment-Id: f_mkzs0t3l0 RnJvbSA4OTUxNjk1OTQzYWQ3OGI4NGQ3YTE0ZWFkYWJmODU2NDgzNmJkOGQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/U3Q9QzM9QTlwaGFuZT0yME1hcmtzPz0gPHNo aXBtaW50c0BnbWFpbC5jb20+CkRhdGU6IFRodSwgMjkgSmFuIDIwMjYgMTM6MDg6MTQgLTA1MDAK U3ViamVjdDogW1BBVENIXSBBZGQgZnVuY3Rpb25zIHVuaXF1aWZ5LXN0cmluZ3MgYW5kIHVuaXF1 aWZ5LWFsaXN0LWtleXMKIChidWcjODAyODMpCgoqIGxpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwg KHVuaXF1aWZ5LXN0cmluZ3MpOgoodW5pcXVpZnktYWxpc3Qta2V5cyk6IE5ldyBkZWZ1bnMuCiog dGVzdC9saXNwL21pc2MtdGVzdHMuZWwgKG1pc2MtdGVzdC11bmlxdWlmeS1zdHJpbmdzKToKKG1p c2MtdGVzdC11bmlxdWlmeS1hbGlzdC1rZXlzKTogTmV3IHRlc3RzLgoqIGV0Yy9ORVdTOiBBbm5v dW5jZSB0aGUgbmV3IGZ1bmN0aW9ucy4KLS0tCiBldGMvTkVXUyAgICAgICAgICAgICAgICAgIHwg IDggKysrKysrKwogbGlzcC9lbWFjcy1saXNwL3N1YnIteC5lbCB8IDQ1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdC9saXNwL21pc2MtdGVzdHMuZWwgICB8IDM1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA4OCBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZXRjL05FV1MgYi9ldGMvTkVXUwppbmRleCA5ZDM2ZjZj M2Q5Ni4uOWU2NThjMmVmMDQgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdTCkBA IC0zMDg4LDYgKzMwODgsMTQgQEAgZGV0ZXJtaW5lZCBieSB0aGUgbmV3IHVzZXIgb3B0aW9uICdw dWxzZS1mYWNlLWR1cmF0aW9uJy4KIAogKiogTWlzY2VsbGFuZW91cwogCistLS0KKyoqKiBOZXcg ZnVuY3Rpb25zICd1bmlxdWlmeS1zdHJpbmdzJyBhbmQgJ3VuaXF1aWZ5LWFsaXN0LWtleXMnLgor VGhlc2UgZnVuY3Rpb25zIGFyZSBzaW1pbGFyIHRvICdnZW5lcmF0ZS1uZXctYnVmZmVyLW5hbWUn LgorJ3VuaXF1aWZ5LXN0cmluZ3MnIHJldHVybnMgYSBjb3B5IG9mIGEgc3RyaW5nIGxpc3Qgd2l0 aCAiPE5VTUJFUj4iCithcHBlbmRlZCB0byBkdXBsaWNhdGVzLiAgJ3VuaXF1aWZ5LWFsaXN0LWtl eXMnIHJldHVybnMgYSBjb3B5IG9mIGFuCithbGlzdCB3aXRoICI8TlVNQkVSPiIgYXBwZW5kZWQg dG8gaXRzIGR1cGxpY2F0ZSBrZXlzLiAgQWxsIG5vbi1zdHJpbmcKK2tleXMgYXJlIGZpcnN0IGNv bnZlcnRlZCB0byBzdHJpbmdzLgorCiAtLS0KICoqKiBUaGUgZmlyc3QgY2xpZW50IGZyYW1lIG5v dyBzaG93cyB3YXJuaW5ncyBmcm9tIGRhZW1vbiBzdGFydHVwLgogV2hlbiB0aGVyZSBhcmUgd2Fy bmluZ3MgZW1pdHRlZCBkdXJpbmcgRW1hY3Mgc3RhcnR1cCwgdXN1YWxseSBkdWUgdG8KZGlmZiAt LWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9zdWJyLXguZWwgYi9saXNwL2VtYWNzLWxpc3Avc3Vici14 LmVsCmluZGV4IDhkMDQ5NTg0ODdmLi44N2Q0ZTNjMTNmNiAxMDA2NDQKLS0tIGEvbGlzcC9lbWFj cy1saXNwL3N1YnIteC5lbAorKysgYi9saXNwL2VtYWNzLWxpc3Avc3Vici14LmVsCkBAIC01ODUs NiArNTg1LDUxIEBAIGVtYWNzLWV0Yy0taGlkZS1sb2NhbC12YXJpYWJsZXMKICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHByb2duIChmb3J3YXJkLWxpbmUgLTEpIChwb2ludCkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAocG9pbnQtbWF4KSkpKSkKIAorOzs7IyMjYXV0b2xvYWQKKyhkZWZ1 biB1bmlxdWlmeS1zdHJpbmdzIChzdHJpbmdzKQorICAiUmV0dXJuIGEgY29weSBvZiBTVFJJTkdT IHdpdGggXCI8TlVNQkVSPlwiIGFwcGVuZGVkIHRvIGR1cGxpY2F0ZXMuCitTVFJJTkdTIHNob3Vs ZCBiZSBhIGxpc3QgYW5kIG1heSBoYXZlIHRleHQgcHJvcGVydGllcyB3aGljaCByZW1haW4KK2lu dGFjdC4KK05VTUJFUiBpcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBpbnRlZ2VyIHN0YXJ0 aW5nIGF0IDIgZm9yIHRoZSBmaXJzdAorZHVwbGljYXRlLgorVGhpcyBmdW5jdGlvbiBpcyBzaW1p bGFyIHRvIGBnZW5lcmF0ZS1uZXctYnVmZmVyLW5hbWUnIGJ1dCBmb3Igc3RyaW5nCitsaXN0cy4i CisgIChsZXQgKCh1bmlxdWVzKQorICAgICAgICAoaHQgKG1ha2UtaGFzaC10YWJsZSA6c2l6ZSAo bGVuZ3RoIHN0cmluZ3MpIDp0ZXN0ICMnZXF1YWwpKSkKKyAgICAoZG9saXN0IChzdHJpbmcgc3Ry aW5ncykKKyAgICAgIChsZXQqICgodW5pcXVlLWtleSBzdHJpbmcpIDsgTGVhdmUgcHJvcGVydGll cyBpbnRhY3QuCisgICAgICAgICAgICAgKGtleSAoc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgc3Ry aW5nKSkKKyAgICAgICAgICAgICAoY291bnQgKGdldGhhc2gga2V5IGh0KSkpCisgICAgICAgICh3 aGVuIGNvdW50CisgICAgICAgICAgKHNldHEgY291bnQgKDErIGNvdW50KSkKKyAgICAgICAgICAo c2V0cSB1bmlxdWUta2V5IChmb3JtYXQgIiVzPCVkPiIgdW5pcXVlLWtleSBjb3VudCkpKQorICAg ICAgICAocHVzaCB1bmlxdWUta2V5IHVuaXF1ZXMpCisgICAgICAgIChwdXRoYXNoIGtleSAob3Ig Y291bnQgMSkgaHQpKSkKKyAgICAobnJldmVyc2UgdW5pcXVlcykpKQorCis7OzsjIyNhdXRvbG9h ZAorKGRlZnVuIHVuaXF1aWZ5LWFsaXN0LWtleXMgKGFsaXN0KQorICAiUmV0dXJuIGEgY29weSBv ZiBBTElTVCB3aXRoIFwiPE5VTUJFUj5cIiBhcHBlbmRlZCB0byBkdXBsaWNhdGUga2V5cy4KK0FM SVNUIGtleXMgc2hvdWxkIGJlIHN0cmluZ3MgYW5kIG1heSBoYXZlIHRleHQgcHJvcGVydGllcyB3 aGljaCByZW1haW4KK2ludGFjdC4gIE5vbi1zdHJpbmcga2V5cyBhcmUgY29udmVydGVkIHRvIHN0 cmluZ3MuCitOVU1CRVIgaXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaW50ZWdlciBzdGFy dGluZyBhdCAyIGZvciB0aGUgZmlyc3QKK2R1cGxpY2F0ZS4KK1RoaXMgZnVuY3Rpb24gaXMgc2lt aWxhciB0byBgZ2VuZXJhdGUtbmV3LWJ1ZmZlci1uYW1lJyBidXQgZm9yIGFsaXN0cy4iCisgIChs ZXQgKCh1bmlxdWVzKQorICAgICAgICAoaHQgKG1ha2UtaGFzaC10YWJsZSA6c2l6ZSAobGVuZ3Ro IGFsaXN0KSA6dGVzdCAjJ2VxdWFsKSkpCisgICAgKGRvbGlzdCAoZWx0IGFsaXN0KQorICAgICAg KGxldCogKChrZXkgKGNhciBlbHQpKQorICAgICAgICAgICAgIChrZXkgKGlmIChzdHJpbmdwIGtl eSkga2V5IChmb3JtYXQgIiVTIiBrZXkpKSkKKyAgICAgICAgICAgICAodW5pcXVlLWtleSBrZXkp IDsgTGVhdmUgcHJvcGVydGllcyBpbnRhY3QuCisgICAgICAgICAgICAgKGtleSAoc3Vic3RyaW5n LW5vLXByb3BlcnRpZXMga2V5KSkKKyAgICAgICAgICAgICAoY291bnQgKGdldGhhc2gga2V5IGh0 KSkpCisgICAgICAgICh3aGVuIGNvdW50CisgICAgICAgICAgKHNldHEgY291bnQgKDErIGNvdW50 KSkKKyAgICAgICAgICAoc2V0cSB1bmlxdWUta2V5IChmb3JtYXQgIiVzPCVkPiIgdW5pcXVlLWtl eSBjb3VudCkpKQorICAgICAgICAocHVzaCAoY29ucyB1bmlxdWUta2V5IChjZHIgZWx0KSkgdW5p cXVlcykKKyAgICAgICAgKHB1dGhhc2gga2V5IChvciBjb3VudCAxKSBodCkpKQorICAgIChucmV2 ZXJzZSB1bmlxdWVzKSkpCisKIChwcm92aWRlICdzdWJyLXgpCiAKIDs7OyBzdWJyLXguZWwgZW5k cyBoZXJlCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvbWlzYy10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9t aXNjLXRlc3RzLmVsCmluZGV4IGI2ZjVmMDFhZDJhLi44NjA3MGI0Zjc1YyAxMDA2NDQKLS0tIGEv dGVzdC9saXNwL21pc2MtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL21pc2MtdGVzdHMuZWwKQEAg LTI0Myw1ICsyNDMsNDAgQEAgbWlzYy10ZXN0LXN0cmluZy1waXhlbC13aWR0aC1kaXNwbGF5LWxp bmUtbnVtYmVycwogICAgICAgKHNldHEtZGVmYXVsdCBkaXNwbGF5LWxpbmUtbnVtYmVycyBkbG4p KQogICAgIChzaG91bGQgKD0gdzAgdzEpKSkpCiAKKyhlcnQtZGVmdGVzdCBtaXNjLXRlc3QtdW5p cXVpZnktc3RyaW5ncyAoKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktc3RyaW5ncworICAg ICAgICAgICAgICAgICAgJygpKQorICAgICAgICAgICAgICAgICAnKCkpKQorICAoc2hvdWxkIChl cXVhbCAodW5pcXVpZnktc3RyaW5ncworICAgICAgICAgICAgICAgICAgJygiYSIgImIiICJjIiAi ZCIgImUiKSkKKyAgICAgICAgICAgICAgICAgICcoImEiICJiIiAiYyIgImQiICJlIikpKQorICAo c2hvdWxkIChlcXVhbCAodW5pcXVpZnktc3RyaW5ncworICAgICAgICAgICAgICAgICAgJygiYSIg ImEiICJiIiAiYyIgImQiICJkIiAiZCIgImUiKSkKKyAgICAgICAgICAgICAgICAgJygiYSIgImE8 Mj4iICJiIiAiYyIgImQiICJkPDI+IiAiZDwzPiIgImUiKSkpCisgIChzaG91bGQgKGVxdWFsICh1 bmlxdWlmeS1zdHJpbmdzCisgICAgICAgICAgICAgICAgICBgKCwocHJvcGVydGl6ZSAiYSIgJ2lk IDEpICwocHJvcGVydGl6ZSAiYSIgJ2lkIDIpICJhIgorICAgICAgICAgICAgICAgICAgICAiYiIg ImMiICJkIiAiZCIgImQiICJlIikpCisgICAgICAgICAgICAgICAgIGAoLChwcm9wZXJ0aXplICJh IiAnaWQgMSkgLChwcm9wZXJ0aXplICJhPDI+IiAnaWQgMikgImE8Mz4iCisgICAgICAgICAgICAg ICAgICAgImIiICJjIiAiZCIgImQ8Mj4iICJkPDM+IiAiZSIpKSkpCisKKyhlcnQtZGVmdGVzdCBt aXNjLXRlc3QtdW5pcXVpZnktYWxpc3Qta2V5cyAoKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVp ZnktYWxpc3Qta2V5cworICAgICAgICAgICAgICAgICAgJygpKQorICAgICAgICAgICAgICAgICAn KCkpKQorICAoc2hvdWxkIChlcXVhbCAodW5pcXVpZnktYWxpc3Qta2V5cworICAgICAgICAgICAg ICAgICAgJygoImEiICJBIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJlIiAiRSIp KSkKKyAgICAgICAgICAgICAgICAgJygoImEiICJBIikgKCJiIiAiQiIpICgiYyIgIkMiKSAoImQi ICJEIikgKCJlIiAiRSIpKSkpCisgIChzaG91bGQgKGVxdWFsICh1bmlxdWlmeS1hbGlzdC1rZXlz CisgICAgICAgICAgICAgICAgICAnKCgiYSIgIkEiKSAoImEiICJBMiIpICgiYiIgIkIiKSAoImMi ICJDIikgKCJkIiAiRCIpICgiZCIgIkQyIikgKCJkIiAiRDMiKSAoImUiICJFIikpKQorICAgICAg ICAgICAgICAgICAnKCgiYSIgIkEiKSAoImE8Mj4iICJBMiIpICgiYiIgIkIiKSAoImMiICJDIikg KCJkIiAiRCIpICgiZDwyPiIgIkQyIikgKCJkPDM+IiAiRDMiKSAoImUiICJFIikpKSkKKyAgKHNo b3VsZCAoZXF1YWwgKHVuaXF1aWZ5LWFsaXN0LWtleXMKKyAgICAgICAgICAgICAgICAgIGAoKCwo cHJvcGVydGl6ZSAiYSIgJ2lkIDEpICJBIikgKCwocHJvcGVydGl6ZSAiYSIgJ2lkIDIpICJBMiIp CisgICAgICAgICAgICAgICAgICAgICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZCIg IkQyIikgKCJkIiAiRDMiKSAoImUiICJFIikpKQorICAgICAgICAgICAgICAgICBgKCgsKHByb3Bl cnRpemUgImEiICdpZCAxKSAiQSIpICgsKHByb3BlcnRpemUgImE8Mj4iICdpZCAyKSAiQTIiKQor ICAgICAgICAgICAgICAgICAgICgiYiIgIkIiKSAoImMiICJDIikgKCJkIiAiRCIpICgiZDwyPiIg IkQyIikgKCJkPDM+IiAiRDMiKSAoImUiICJFIikpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHVuaXF1 aWZ5LWFsaXN0LWtleXMKKyAgICAgICAgICAgICAgICAgICcoKDEgIkEiKSAoMSAiQTIiKSAoMiAi QiIpICgiYyIgIkMiKSAoImQiICJEIikgKCJkIiAiRDIiKSAoImQiICJEMyIpICgiZSIgIkUiKSkp CisgICAgICAgICAgICAgICAgICcoKCIxIiAiQSIpICgiMTwyPiIgIkEyIikgKCIyIiAiQiIpICgi YyIgIkMiKSAoImQiICJEIikgKCJkPDI+IiAiRDIiKSAoImQ8Mz4iICJEMyIpICgiZSIgIkUiKSkp KSkKKwogKHByb3ZpZGUgJ21pc2MtdGVzdHMpCiA7OzsgbWlzYy10ZXN0cy5lbCBlbmRzIGhlcmUK LS0gCjIuNTIuMAoK --000000000000fdc1a206498ade62--
bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.Received: (at submit) by debbugs.gnu.org; 29 Jan 2026 18:15:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 29 13:15:14 2026 Received: from localhost ([127.0.0.1]:59874 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1vlWXy-0003iV-Bf for submit <at> debbugs.gnu.org; Thu, 29 Jan 2026 13:15:14 -0500 Received: from lists.gnu.org ([2001:470:142::17]:58038) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <shipmints@HIDDEN>) id 1vlWXw-0003gO-CJ for submit <at> debbugs.gnu.org; Thu, 29 Jan 2026 13:15:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <shipmints@HIDDEN>) id 1vlWXr-0001mU-1c for bug-gnu-emacs@HIDDEN; Thu, 29 Jan 2026 13:15:07 -0500 Received: from mail-ua1-x92c.google.com ([2607:f8b0:4864:20::92c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <shipmints@HIDDEN>) id 1vlWXp-000085-BB for bug-gnu-emacs@HIDDEN; Thu, 29 Jan 2026 13:15:06 -0500 Received: by mail-ua1-x92c.google.com with SMTP id a1e0cc1a2514c-94803734b11so756642241.2 for <bug-gnu-emacs@HIDDEN>; Thu, 29 Jan 2026 10:15:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769710503; cv=none; d=google.com; s=arc-20240605; b=V+1I6xAwIF4aD/qv0fU3ynoaJDmCeLMTHA7pXXXuz0KFkOzmva1XAwgST+cqKUNlfT 7IK7z/4Gdgyvnzhj5mLg2oSw4Hp6WT5vII28OjL5kofYItNIcm3iTCFlKpZEYqp6ePC+ LE1bw0ovjwKcY/KRqb/X08bwyShoA8MfLaTNJiAmCVpcHgGY6TOu7RzTBzpi/P4h55+X 34MKbtK5eG32ow9LxlbhkDrw2fG/8v+A5HhowJ9RjbPfck9XKyMJm5Z5YZurx3KMNp3u EcN+nB1SPCzC/9ctRrdxFGyDY2jn/YVG6yXTuIHZmOMixaXreFh6s62cJc9exijxn2l1 f7Ng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :mime-version:dkim-signature; bh=KuLyHn0qQQX46IlVQkPj2TMlz7eV8ecOGad31EXS/6c=; fh=UIKK90k7p1oPIzh1RMmZ8KusZ36xSeJZiCePbLMzw+o=; b=R6iteWBVLYqpon/ThX6efB/iSHNOwC0mOacHpcj6lkz7bvDjOS2BYfWwBEyMZLCsWu VaoHvG+xvwGdQg+2gIJIAk0AVnDNpEYUN6blHQS3MwNqJ+gOyZk1ONEW96ejz06FOWHY ntQ11JRzL9lDcmwUpbU9oh7sv7uXb1xeyN3uLBT/Rmvmeb/WJozz//qYd7HyevEwhvUk ol4hMAj8ltaDPopXprm5JhotcWQHIhNWMIzlgd6EYhrcmZH8ZixJOww+1GqLJvA1jsBX ZLaaEDsBUhpHqXTmasIcgJB/5ynfEF7920t1Ed0xGwvUqZsLeaGuRVpDlyEAqAg8mT3S Sn0Q==; darn=gnu.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769710503; x=1770315303; darn=gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=KuLyHn0qQQX46IlVQkPj2TMlz7eV8ecOGad31EXS/6c=; b=lnRLCHgZyNRJsBJrbYcEWg/aq8cT9f9eWBiHxfDO3EpRqM9VjK5f1qFb1xK2GP1KhS xIKRA7oxZFxk6gLxGr7fBrrLEdoG77pRb5U5h++gM9B1mZ6Hm0noXFj9A+TpebLgbLcc hdGVjT2cc9C68ea1b7X8ER5AGY6B9A/NQqSFp5xA7mqL7RJE0KTl3FV8RuReoKJ/fWe0 G43qF2Hztc8jAgH+64TCzlBmIP8erKk1NmAr4Va/ATplYJT4oUX+qnfeZtMkpqjknIZT azNk5iLtysabZMQaqYssVJPKCs6Nmj+Xu4ZsqSw+aX+9v6++SY7RXlEm8WCryPIxiLct w2tQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769710503; x=1770315303; h=content-transfer-encoding:cc:to:subject:message-id:date:from :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=KuLyHn0qQQX46IlVQkPj2TMlz7eV8ecOGad31EXS/6c=; b=MFgU+TA0aDllqDy9FOCVZw2nbEEblOaz1DoSKNrhLKzzccD/G2iW7DKbxebaPVCupC E6vAYdVmz2/DU+u7h2OEcSTWWAmESQkYIhRlx1y0fIZNqmdFuFGE9JJiXGKRk85csHKN va23w8tBCoo3ZHWh3N/qHBMlq2YDkJFNo3qrI9U3XGxCwaX8KjAPMbVH5+AKYThlITKm YjiGHnXeh7zSw7AoQ42ZVlTZQ7gfgmCPSH5laaMmm1XhrF0L+ygRij2AVCE7KI6eeltf gAm8xUOlV2hZ/nH29Tj03DKK2KFlchm5oygd5RQdB5X0Y8X6Q95a+IHhzs9qPnDOG3By /VTw== X-Gm-Message-State: AOJu0YwP4/8k7MSXO+xFgqMPcGPF6waT0n0QJSRATh97DIvM4az2ZmuD un6kTu/J/tZ0gA7NqFoU02u+tR2TMv1CmOzpMatH4BtyrdhCftMqzAKxK/Z6XE3J9see6sgjKyD T39oOiOAjkX5DjM71zXcqALeuYBZkR+I1mWIS X-Gm-Gg: AZuq6aL0FdWXb/RYgHqbOh0fXUVvMHzAOTOtfcGh0Xrdobfcj5nJxRA1LxdMTydNZq1 S06NCPhgQCmZcvAB8ghfvwK4nhNR1R7CGVILBLVz9K0EEbvSM6gBn/8DEhRycScU1uUsuxbEFQG +Lf/jH29nA0OgfDpfgg0iu+Xl6QuB6VQ58MNN+m1Mq4/K3Xk/tFqhSZLAVBdN3Q8nMq96KMM9T9 sjEhxIAnUmbDbf7ydh1Xp5VZT9JAL+4Rn6HZzipvQYydp36DN6qgOs+5jcNL6O5b9DrhMF05swb lhraqvWwi28yPTYaIfeqS/o+DIi+k9TOV7YTRVfvwtz3WvIN6MY= X-Received: by 2002:a05:6102:a46:b0:5db:ca9e:b57c with SMTP id ada2fe7eead31-5f8e25eb665mr136535137.27.1769710498649; Thu, 29 Jan 2026 10:14:58 -0800 (PST) MIME-Version: 1.0 From: =?UTF-8?Q?St=C3=A9phane_Marks?= <shipmints@HIDDEN> Date: Thu, 29 Jan 2026 13:14:44 -0500 X-Gm-Features: AZwV_Qi4RQDZobYi1bcJYyVsL1wEwDXOt-jgGR84rYxMy1VUz5sDixq6CM0KCoI Message-ID: <CAN+1Hbp35XuJrMCN3ns9EDNueEODtvw5rjfM_MEcd_sKdiTGtw@HIDDEN> Subject: [PATCH] Add functions uniquify-strings and uniquify-alist-keys To: bug-gnu-emacs@HIDDEN Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=2607:f8b0:4864:20::92c; envelope-from=shipmints@HIDDEN; helo=mail-ua1-x92c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 2.0 (++) 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: These functions are similar to 'generate-new-buffer-name'. 'uniquify-strings' returns a copy of a string list with "<NUMBER>" appended to duplicates. 'uniquify-alist-keys' returns a copy of an alist w [...] Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -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.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received' headers -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (shipmints[at]gmail.com) X-Debbugs-Envelope-To: submit Cc: Juri Linkov <juri@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.0 (+) These functions are similar to 'generate-new-buffer-name'. 'uniquify-strings' returns a copy of a string list with "<NUMBER>" appended to duplicates. 'uniquify-alist-keys' returns a copy of an alist with "<NUMBER>" appended to its duplicate keys. All non-string keys are first converted to strings. I've been using similar functions to assist with `completing-read` cases with duplicate candidates and I'd prefer to use core functions. Juri and I will use these in forthcoming tab-bar.el and frame.el `completing-read` enhancements. Despite the name prefixes being 'uniquify-', I put these into subr-x.el. Patch incoming as soon as a bug number is assigned. -St=C3=A9phane
Stéphane Marks <shipmints@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#80283; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.