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; 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, 1 Feb 2026 12:30:02 UTC

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