Subject: [PATCH] Avoid empty unique qualifier in buffer name

From: Manuel Giraud <[email-masked]>
Date: Fri, 06 Dec 2024 13:17:31 +0100

Tags: patch

Hi,

This patch prevents from having an empty unique qualifier in the buffer
name.  Maybe this could happen with others file buffer as well but, most
of the time, you could witness it with Dired buffer in homedir.  Here is
a recipe:

  - emacs -Q
  - C-x d /ssh:somewhere: ;; This buffer is named "~</ssh:somewhere:>"
  - C-x d /~/             ;; This buffer is named "~<>"

With this patch, the last buffer will simply be named "~" instead.

In GNU Emacs 31.0.50 (build 26, x86_64-unknown-openbsd7.6, X toolkit) of
 2024-12-06 built on computer
Repository revision: 2c1dfba7feb67c39299da0579a2be7ff14e13ccb
Repository branch: mgi/unique
Windowing system distributor 'The X.Org Foundation', version 11.0.12101014
System Description: OpenBSD computer 7.6 GENERIC.MP#458 amd64

Configured using:
 'configure CC=egcc CPPFLAGS=-I/usr/local/include
 LDFLAGS=-L/usr/local/lib MAKEINFO=gmakeinfo --prefix=/home/manuel/emacs
 --bindir=/home/manuel/bin --with-x-toolkit=lucid
 --with-toolkit-scroll-bars=no --without-cairo
 --without-compress-install'

>From 70b7e0afe02669df44fd719c2ab35561b565f2df Mon Sep 17 00:00:00 2001
From: Manuel Giraud <[email-masked]>
Date: Fri, 6 Dec 2024 12:01:29 +0100
Subject: [PATCH] Avoid empty unique qualifier in buffer name

* lisp/uniquify.el (uniquify-get-proposed-name): If the unique
qualifier will end up being empty just return the base name.
---
 lisp/uniquify.el | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/lisp/uniquify.el b/lisp/uniquify.el
index efe42762a6b..677270d6a91 100644
--- a/lisp/uniquify.el
+++ b/lisp/uniquify.el
@@ -397,7 +397,10 @@ uniquify-get-proposed-name
       (setq uniquify-possibly-resolvable t))
 
     (cond
-     ((null extra-string) base)
+     ((or (null extra-string)
+          (and (= 1 (length extra-string))
+               (string= "" (car extra-string))))
+      base)
      ((string-equal base "") ;Happens for dired buffers on the root directory.
       (mapconcat #'identity extra-string "/"))
      ((eq uniquify-buffer-name-style 'reverse)
-- 
2.47.0

-- 
Manuel Giraud