bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#56693: 29.0.50; write-file does not respect uniquify.el


From: Stefan Monnier
Subject: bug#56693: 29.0.50; write-file does not respect uniquify.el
Date: Tue, 16 Aug 2022 17:31:09 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)

> Steps to reproduce (bug case):
> 1) emacs -Q
> 2) eval (setopt uniquify-buffer-name-style 'forward)
> 3) C-x C-f "~/tmp/a/x"
> 4) C-x C-f "~/tmp/b/y"
> 5) C-x C-w "~/tmp/b/x"
> 6) The buffers are not named correctly: "x" and "x<2>"

Hmm... indeed.

>           (or (string= new-name (buffer-name))
> -             (rename-buffer new-name t))))
> +             (uniquify--rename-buffer-advice new-name t))))

That's an OK workaround, yes.

> But it seems to be an unnecessary change, since `rename-bufer' calls
> `uniquify--rename-buffer-advice'. The root-cause might be related to
> `rename-buffer' passing the result of `generate-new-buffer-name' (that
> generates "x<2>") to `uniquify--rename-buffer-advice'.

Exactly.
I installed the corresponding change, so it should be fixed on `master`.
Thanks,


        Stefan


diff --git a/src/buffer.c b/src/buffer.c
index 98066a2eb60..0d553e7e2d1 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1563,7 +1563,8 @@ DEFUN ("rename-buffer", Frename_buffer, Srename_buffer, 
1, 2,
   (register Lisp_Object newname, Lisp_Object unique)
 {
   register Lisp_Object tem, buf;
-
+  Lisp_Object requestedname = newname;
+
   CHECK_STRING (newname);
 
   if (SCHARS (newname) == 0)
@@ -1599,7 +1601,7 @@ DEFUN ("rename-buffer", Frename_buffer, Srename_buffer, 
1, 2,
   run_buffer_list_update_hook (current_buffer);
 
   call2 (intern ("uniquify--rename-buffer-advice"),
-         BVAR (current_buffer, name), unique);
+         requestedname, unique);
 
   /* Refetch since that last call may have done GC.  */
   return BVAR (current_buffer, name);






reply via email to

[Prev in Thread] Current Thread [Next in Thread]