GNU bug report logs - #80283
[PATCH] Add functions uniquify-strings and uniquify-alist-keys

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Stéphane Marks <shipmints@HIDDEN>; Keywords: patch; dated Thu, 29 Jan 2026 18:16:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 80283 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto=
:eliz@HIDDEN">eliz@HIDDEN</a>&gt; 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">&gt; From: Juri Linkov &lt;<a href=3D"mailto:juri@HIDDEN" ta=
rget=3D"_blank">juri@HIDDEN</a>&gt;<br>
&gt; 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>
&gt;=C2=A0 =C2=A0<a href=3D"mailto:monnier@HIDDEN" target=3D"_bla=
nk">monnier@HIDDEN</a><br>
&gt; Date: Thu, 19 Feb 2026 19:20:30 +0200<br>
&gt; <br>
&gt; &gt;&gt;=C2=A0 =C2=A0(deduplicate &#39;(&quot;a&quot; &quot;b&quot; &q=
uot;a&quot;) &#39;list)<br>
&gt; &gt;&gt;=C2=A0 =C2=A0(deduplicate &#39;((&quot;a&quot; . 1) (&quot;b&q=
uot; . 2) (&quot;a&quot; . 3)) &#39;alist)<br>
&gt; &gt;&gt; <br>
&gt; &gt;&gt; than it worse than just:<br>
&gt; &gt;&gt; <br>
&gt; &gt;&gt;=C2=A0 =C2=A0(deduplicate-list &#39;(&quot;a&quot; &quot;b&quo=
t; &quot;a&quot;))<br>
&gt; &gt;&gt;=C2=A0 =C2=A0(deduplicate-alist &#39;((&quot;a&quot; . 1) (&qu=
ot;b&quot; . 2) (&quot;a&quot; . 3)))<br>
&gt; &gt;<br>
&gt; &gt; Why is it worse?<br>
&gt; <br>
&gt; Because it&#39;s even not alist, but alist-keys.<br>
&gt; So the argument of &#39;deduplicate&#39; doesn&#39;t describe the list=
 type.<br>
&gt; Whereas &#39;deduplicate-alist-keys&#39; clearly conveys the meaning.<=
br>
<br>
That&#39;s immaterial.=C2=A0 We could have deduplicate-alist-keys, I&#39;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&#39;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&#39;s suggestion to be passed bulk keys.=C2=A0 If y&#39;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 &amp;optional suffix-format)<br>=C2=A0 &quot;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&#39;, and containing a single embedded =
\&quot;%d\&quot;.=C2=A0 It<br>defaults to \&quot;&lt;%d&gt;\&quot;.=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.&quot;<br>=C2=A0 ;; Handle nil SEQUENCE.<br>=C2=
=A0 nil)<br><br>(cl-defmethod seq-deduplicate-keys ((sequence cons) &amp;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 &#39;())<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 #&#39;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 &quot;%S&quot; 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 &quot;%s&quot;<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 &quot;&lt;%d&gt;&quot;))<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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto=
:eliz@HIDDEN">eliz@HIDDEN</a>&gt; 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">&gt; From: Juri Linkov &lt;<a href=3D"mailto:juri@HIDDEN" ta=
rget=3D"_blank">juri@HIDDEN</a>&gt;<br>
&gt; 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>
&gt;=C2=A0 =C2=A0<a href=3D"mailto:monnier@HIDDEN" target=3D"_bla=
nk">monnier@HIDDEN</a><br>
&gt; Date: Thu, 19 Feb 2026 09:13:10 +0200<br>
&gt; <br>
&gt; Then the calling convention will be:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0(deduplicate &#39;(&quot;a&quot; &quot;b&quot; &quot;a&quo=
t;) &#39;list)<br>
&gt;=C2=A0 =C2=A0(deduplicate &#39;((&quot;a&quot; . 1) (&quot;b&quot; . 2)=
 (&quot;a&quot; . 3)) &#39;alist)<br>
&gt; <br>
&gt; than it worse than just:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0(deduplicate-list &#39;(&quot;a&quot; &quot;b&quot; &quot;=
a&quot;))<br>
&gt;=C2=A0 =C2=A0(deduplicate-alist &#39;((&quot;a&quot; . 1) (&quot;b&quot=
; . 2) (&quot;a&quot; . 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&#39;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&#3=
9;d proposed several ways to get specify a deduplication method: default su=
ffix-format &lt;#&gt;, specified suffix-format &quot;(%d)&quot;,=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&#39;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&#39;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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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)))




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto=
:eliz@HIDDEN">eliz@HIDDEN</a>&gt; 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">&gt; From: Juri Linkov &lt;<a href=3D"mailto:juri@HIDDEN" ta=
rget=3D"_blank">juri@HIDDEN</a>&gt;<br>
&gt; Cc: Sean Whitton &lt;<a href=3D"mailto:spwhitton@HIDDEN" targe=
t=3D"_blank">spwhitton@HIDDEN</a>&gt;,=C2=A0 Eli Zaretskii &lt;<a h=
ref=3D"mailto:eliz@HIDDEN" target=3D"_blank">eliz@HIDDEN</a>&gt;,<br>
&gt;=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>
&gt; Date: Wed, 18 Feb 2026 09:50:33 +0200<br>
&gt; <br>
&gt; It seems alist-dedupe-keys is the most suitable name to avoid confusio=
n<br>
&gt; with the unification of buffer names.<br>
<br>
Please, not &quot;dedupe&quot;.=C2=A0 There&#39;s nothing wrong with &quot;=
deduplicate&quot;, and<br>
it isn&#39;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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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'.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto:=
spwhitton@HIDDEN">spwhitton@HIDDEN</a>&gt; 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>
&gt;&gt; bug#73117: Imenu missing entries when flattening by group<br>
&gt;&gt; bug#80130: Add completing-read to tab-bar-closed-tabs<br>
&gt;&gt; bug#80192: Add undelete-frame-by-id<br>
&gt;<br>
&gt; Thanks.=C2=A0 Three cases is not enough in my book, but if Sean is oka=
y<br>
&gt; with adding this, I won&#39;t object.<br>
&gt;<br>
&gt; Can we find a better name, though?=C2=A0 Like, maybe start with &quot;=
alist-&quot;<br>
&gt; not with &quot;uniquify-&quot;?<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&#39;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 &quot;uniquify-&quot; has confused t=
hings.=C2=A0 It&#39;s really just a word and the alist=C2=A0key deduper doe=
sn&#39;t have anything to do with uniquifying buffer names.=C2=A0 I suggest=
 calling the function &quot;alist-dedupe-keys&quot; and if we&#39;d started=
 with that name I&#39;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&#39;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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto:eliz@HIDDEN"=
>eliz@HIDDEN</a>&gt; 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">&gt; From: Juri Linkov &lt;<a href=3D"mailto:juri@HIDDEN" tar=
get=3D"_blank">juri@HIDDEN</a>&gt;<br>
&gt; Cc: St=C3=A9phane Marks &lt;<a href=3D"mailto:shipmints@HIDDEN" tar=
get=3D"_blank">shipmints@HIDDEN</a>&gt;,<br>
&gt;=C2=A0 =C2=A0<a href=3D"mailto:spwhitton@HIDDEN" target=3D"_bla=
nk">spwhitton@HIDDEN</a>,<br>
&gt;=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>
&gt; Date: Mon, 16 Feb 2026 09:56:16 +0200<br>
&gt; <br>
&gt; &gt;&gt;=C2=A0 &gt; +*** New function &#39;uniquify-alist-keys&#39;.<b=
r>
&gt; &gt;&gt;=C2=A0 &gt; +This function is similar to &#39;generate-new-buf=
fer-name&#39;.<br>
&gt; &gt;&gt;=C2=A0 &gt; +&#39;uniquify-alist-keys&#39; returns a copy of a=
n alist with &quot;&lt;NUMBER&gt;&quot;<br>
&gt; &gt;&gt;=C2=A0 &gt; +appended to its duplicate keys.=C2=A0 Text proper=
ties are retained, and<br>
&gt; &gt;&gt;=C2=A0 &gt; +non-string keys are first converted to strings.=
=C2=A0 You can provide an<br>
&gt; &gt;&gt;=C2=A0 &gt; +optional suffix format string to override the def=
ault &quot;&lt;%d&gt;&quot;, for<br>
&gt; &gt;&gt;=C2=A0 &gt; +example with &quot;(%d)&quot;, or a function whic=
h is passed the key to uniquify<br>
&gt; &gt;&gt;=C2=A0 &gt; +and the incrementing count.=C2=A0 Use this, for e=
xample, to differentiate<br>
&gt; &gt;&gt;=C2=A0 &gt; +among duplicate candidates &#39;completing-read&#=
39;.<br>
&gt; &gt;&gt; <br>
&gt; &gt;&gt;=C2=A0 Thanks, but am I the only one who asks himself why such=
 a peculiar<br>
&gt; &gt;&gt;=C2=A0 function is needed as part of Emacs core?=C2=A0 How man=
y times some Lisp<br>
&gt; &gt;&gt;=C2=A0 program needed such functionality?=C2=A0 If it&#39;s ra=
re enough, I don&#39;t think<br>
&gt; &gt;&gt;=C2=A0 we should have it in core.<br>
&gt; &gt;&gt; <br>
&gt; &gt;&gt;=C2=A0 Sean, WDYT?<br>
&gt; &gt;&gt; <br>
&gt; &gt;&gt; Juri and I have identified several places already in frame.el=
,<br>
&gt; &gt;&gt; tab-bar.el, imenu.el where we&#39;d use this now.<br>
&gt; &gt;<br>
&gt; &gt; Please point to them, or tell in which message you mentioned them=
.<br>
&gt; &gt; I&#39;d like to review them.<br>
&gt; <br>
&gt; bug#73117: Imenu missing entries when flattening by group<br>
&gt; bug#80130: Add completing-read to tab-bar-closed-tabs<br>
&gt; 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&#39;t object.<br>
<br>
Can we find a better name, though?=C2=A0 Like, maybe start with &quot;alist=
-&quot;<br>
not with &quot;uniquify-&quot;?</blockquote><div dir=3D"auto"><br></div><di=
v dir=3D"auto">I&#39;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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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-"?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto=
:eliz@HIDDEN">eliz@HIDDEN</a>&gt; 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">&gt; Cc: Stefan Monnier &lt;<a href=3D"mailto:monnier@HIDDEN=
eal.ca" target=3D"_blank">monnier@HIDDEN</a>&gt;, <a href=3D"mail=
to:80283 <at> debbugs.gnu.org" target=3D"_blank">80283 <at> debbugs.gnu.org</a><br>
&gt; From: St=C3=A9phane Marks &lt;<a href=3D"mailto:shipmints@HIDDEN" t=
arget=3D"_blank">shipmints@HIDDEN</a>&gt;<br>
&gt; Date: Sun, 15 Feb 2026 14:00:10 -0500<br>
&gt; <br>
&gt; +*** New function &#39;uniquify-alist-keys&#39;.<br>
&gt; +This function is similar to &#39;generate-new-buffer-name&#39;.<br>
&gt; +&#39;uniquify-alist-keys&#39; returns a copy of an alist with &quot;&=
lt;NUMBER&gt;&quot;<br>
&gt; +appended to its duplicate keys.=C2=A0 Text properties are retained, a=
nd<br>
&gt; +non-string keys are first converted to strings.=C2=A0 You can provide=
 an<br>
&gt; +optional suffix format string to override the default &quot;&lt;%d&gt=
;&quot;, for<br>
&gt; +example with &quot;(%d)&quot;, or a function which is passed the key =
to uniquify<br>
&gt; +and the incrementing count.=C2=A0 Use this, for example, to different=
iate<br>
&gt; +among duplicate candidates &#39;completing-read&#39;.<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&#39;s rare enough, I don&#39=
;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&#39;d use this now.</di=
v></div></div>

--000000000000d11001064ae2498a--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto:j=
uri@HIDDEN">juri@HIDDEN</a>&gt; 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">&gt; I don&#39;t mind installing something simpler.=C2=A0 I h=
ope Stefan will add a use<br>
&gt; case for the semi-bulk and bulk handler cases.=C2=A0 If we don&#39;t h=
ear back soon,<br>
&gt; I&#39;ll simplify the patch and we can add new optional arguments and<=
br>
&gt; functionality later.<br>
<br>
Let&#39;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>
&gt; Question: Should we change the default format to be &quot;()&quot; rat=
her than copy<br>
&gt; &quot;&lt;&gt;&quot; from `generate-new-buffer-name` and people can us=
e &quot;&lt;&gt;&quot; if/when they<br>
&gt; need it?<br>
<br>
&quot;&lt;%s&gt;&quot; looks more standard for the default value.=C2=A0 How=
ever, &quot;&lt;%s&gt;&quot;<br>
sorts duplicate names to the end of the completions.=C2=A0 While &quot;(%s)=
&quot;<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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto:j=
uri@HIDDEN">juri@HIDDEN</a>&gt; 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">&gt;=C2=A0 =C2=A0 =C2=A0We could install your previous simple=
r solution first<br>
&gt;=C2=A0 =C2=A0 =C2=A0since a new function &#39;uniquify-conflicting-alis=
t-keys&#39;<br>
&gt;=C2=A0 =C2=A0 =C2=A0raises more questions: the name implies that the si=
mpler<br>
&gt;=C2=A0 =C2=A0 =C2=A0function &#39;uniquify-alist-keys&#39; doesn&#39;t =
handle conflicting keys.<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0Maybe we could add only one function &#39;uniquify-=
alist-keys&#39;<br>
&gt;=C2=A0 =C2=A0 =C2=A0with a new optional argument &#39;handler&#39;.=C2=
=A0 When it&#39;s non-nil<br>
&gt;=C2=A0 =C2=A0 =C2=A0then ignore &#39;suffix-format&#39;.<br>
&gt;<br>
&gt; Okay I did that in the attached with revised tests.=C2=A0 Stefan sugge=
sted a way<br>
&gt; for a handler to get the entire list of conflicts at once so I worked =
that<br>
&gt; option in also, though the function could be closed over and a handler=
 can<br>
&gt; maintain full context.=C2=A0 Check out the docstring and the tests for=
 examples.<br>
<br>
Sorry, I&#39;m lost with the complexity of the HANDLE-KEYS arg values<br>
&#39;include-singlets&#39; and &#39;bulk&#39;.=C2=A0 I can&#39;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&#39;t make keys unique, because often even<br>
annotations are duplicated.=C2=A0 So we can&#39;t avoid sequential numbers<=
br>
(2), (3), etc.<br>
<br>
Maybe first we should install &#39;uniquify-alist-keys&#39; with just &#39;=
suffix-format&#39;?<br></blockquote><div><br></div><div class=3D"gmail_defa=
ult" style=3D"font-family:monospace">I don&#39;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&#39;t hear back soon, I&#39;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 &quot;()&quot; rather than copy &quot;&lt=
;&gt;&quot; from `generate-new-buffer-name` and people can use &quot;&lt;&g=
t;&quot; if/when they need it?</div></div></div>

--000000000000500dca064adfaabc--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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'?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto:=
juri@HIDDEN">juri@HIDDEN</a>&gt; 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">&gt; Here&#39;s the latest patch which includes the function=
<br>
&gt; &#39;uniquify-conflicting-alist-keys&#39; and tests for it.=C2=A0 That=
 function was<br>
&gt; discussed in another thread with Stefan.<br>
<br>
We could install your previous simpler solution first<br>
since a new function &#39;uniquify-conflicting-alist-keys&#39;<br>
raises more questions: the name implies that the simpler<br>
function &#39;uniquify-alist-keys&#39; doesn&#39;t handle conflicting keys.=
<br>
<br>
Maybe we could add only one function &#39;uniquify-alist-keys&#39;<br>
with a new optional argument &#39;handler&#39;.=C2=A0 When it&#39;s non-nil=
<br>
then ignore &#39;suffix-format&#39;.<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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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'.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"=
mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>&gt; 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 &lt;<a href=3D"ma=
ilto:juri@HIDDEN" target=3D"_blank">juri@HIDDEN</a>&gt; 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">&gt;=C2=A0 =C2=A0 =C2=A0Try the attached patch.<br>
&gt;<br>
&gt; 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&#39;s the latest pa=
tch which includes the function &#39;uniquify-conflicting-alist-keys&#39; 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 &#39;completing-read&#39; 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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto:ju=
ri@HIDDEN">juri@HIDDEN</a>&gt; 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">&gt;=C2=A0 =C2=A0 =C2=A0Try the attached patch.<br>
&gt;<br>
&gt; 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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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)))

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"=
mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>&gt; 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 &lt;<a h=
ref=3D"mailto:shipmints@HIDDEN" target=3D"_blank">shipmints@HIDDEN</a=
>&gt; 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 &lt;<a href=3D=
"mailto:juri@HIDDEN" target=3D"_blank">juri@HIDDEN</a>&gt; 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">&gt;&gt; I&#39;ve been using similar functions to assist=
 with `completing-read`<br>
&gt;&gt; cases with duplicate candidates and I&#39;d prefer to use core fun=
ctions.<br>
&gt;&gt; Juri and I will use these in forthcoming tab-bar.el and frame.el<b=
r>
&gt;&gt; `completing-read` enhancements.<br>
&gt;<br>
&gt; 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 &#39;imenu-flatten&#39; to &#39;annotation&=
#39;,<br>
and typing &#39;M-g i imenu TAB&#39; in imenu.el.=C2=A0 Previously, it alwa=
ys<br>
navigated to the first occurrence of &#39;imenu&#39;.=C2=A0 But now due to<=
br>
disambiguation, &quot;imenu&lt;2&gt;&quot; moves to the second.<br>
<br>
However, &quot;imenu&lt;2&gt;&quot; is placed at the end of the completions=
 buffer.<br>
Would it be possible to specify the format of the suffix, then<br>
&quot;imenu(2)&quot; will be placed after &quot;imenu&quot;:<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 &quot;%s&quot; is better than &quot;%S&quot=
; for non-string key conversion.=C2=A0 In the next go &#39;round, I&#39;ll =
change it.</div></div></div>

--000000000000ef38f50649c8de74--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"=
mailto:shipmints@HIDDEN">shipmints@HIDDEN</a>&gt; 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 &lt;<a href=3D"m=
ailto:juri@HIDDEN" target=3D"_blank">juri@HIDDEN</a>&gt; 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">&gt;&gt; I&#39;ve been using similar functions to assist w=
ith `completing-read`<br>
&gt;&gt; cases with duplicate candidates and I&#39;d prefer to use core fun=
ctions.<br>
&gt;&gt; Juri and I will use these in forthcoming tab-bar.el and frame.el<b=
r>
&gt;&gt; `completing-read` enhancements.<br>
&gt;<br>
&gt; 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 &#39;imenu-flatten&#39; to &#39;annotation&=
#39;,<br>
and typing &#39;M-g i imenu TAB&#39; in imenu.el.=C2=A0 Previously, it alwa=
ys<br>
navigated to the first occurrence of &#39;imenu&#39;.=C2=A0 But now due to<=
br>
disambiguation, &quot;imenu&lt;2&gt;&quot; moves to the second.<br>
<br>
However, &quot;imenu&lt;2&gt;&quot; is placed at the end of the completions=
 buffer.<br>
Would it be possible to specify the format of the suffix, then<br>
&quot;imenu(2)&quot; will be placed after &quot;imenu&quot;:<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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto:j=
uri@HIDDEN">juri@HIDDEN</a>&gt; 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">&gt;&gt; I&#39;ve been using similar functions to assist with=
 `completing-read`<br>
&gt;&gt; cases with duplicate candidates and I&#39;d prefer to use core fun=
ctions.<br>
&gt;&gt; Juri and I will use these in forthcoming tab-bar.el and frame.el<b=
r>
&gt;&gt; `completing-read` enhancements.<br>
&gt;<br>
&gt; 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 &#39;imenu-flatten&#39; to &#39;annotation&=
#39;,<br>
and typing &#39;M-g i imenu TAB&#39; in imenu.el.=C2=A0 Previously, it alwa=
ys<br>
navigated to the first occurrence of &#39;imenu&#39;.=C2=A0 But now due to<=
br>
disambiguation, &quot;imenu&lt;2&gt;&quot; moves to the second.<br>
<br>
However, &quot;imenu&lt;2&gt;&quot; is placed at the end of the completions=
 buffer.<br>
Would it be possible to specify the format of the suffix, then<br>
&quot;imenu(2)&quot; will be placed after &quot;imenu&quot;:<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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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)




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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 &lt;<a href=3D"mailto:ju=
ri@HIDDEN">juri@HIDDEN</a>&gt; 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">&gt; These functions are similar to &#39;generate-new-buffer-=
name&#39;.<br>
<br>
They look more similar to &#39;create-file-buffer&#39; that uses<br>
&#39;uniquify--create-file-buffer-advice&#39;.<br>
<br>
Or &#39;(uniquify-get-unique-names buffers)&#39;.<br>
<br>
OTOH, they don&#39;t belong to uniquify.el, because<br>
&#39;uniquify-strings&#39; 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 &#39;generate-new-buffer-name&#39; m=
ore than it does the various &#39;uniquify-buffer-name-style&#39; 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"=
>
&gt; &#39;uniquify-strings&#39; returns a copy of a string list with &quot;=
&lt;NUMBER&gt;&quot;<br>
&gt; appended to duplicates. &#39;uniquify-alist-keys&#39; returns a copy o=
f an<br>
&gt; alist with &quot;&lt;NUMBER&gt;&quot; appended to its duplicate keys.=
=C2=A0 All non-string<br>
&gt; keys are first converted to strings.<br>
<br>
It seems &#39;uniquify-alist-keys&#39; 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 &#39;uniquify-stri=
ngs&#39;, 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">
&gt; I&#39;ve been using similar functions to assist with `completing-read`=
<br>
&gt; cases with duplicate candidates and I&#39;d prefer to use core functio=
ns.<br>
&gt; Juri and I will use these in forthcoming tab-bar.el and frame.el<br>
&gt; `completing-read` enhancements.<br>
<br>
Thanks, we need such function in imenu.el as well.<br>
<br>
&gt; Despite the name prefixes being &#39;uniquify-&#39;, 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&#39;s see what others have to s=
ay.</div></div></div>

--0000000000001a64600649c25182--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at 80283 <at> debbugs.gnu.org:


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--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


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




Acknowledgement sent to Stéphane Marks <shipmints@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#80283; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sun, 22 Feb 2026 07:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.