]> git.eshelyaron.com Git - emacs.git/commitdiff
Make 'buffer-last-name' work better after 'find-alternate-file' (Bug#68235)
authorMartin Rudalics <rudalics@gmx.at>
Mon, 15 Apr 2024 09:17:51 +0000 (11:17 +0200)
committerEshel Yaron <me@eshelyaron.com>
Sat, 20 Apr 2024 11:00:41 +0000 (14:00 +0300)
* lisp/files.el (find-alternate-file): Before killing the previous
buffer, try to restore its name and filenames (Bug#68235).

(cherry picked from commit 9a79db506e39c02daa81629f0b224a86fad2b3c6)

lisp/files.el

index 82544bd20be87c39f49aead952a081a27e68b897..605d9b03d05862b18ad5d635cb2ee910cc3292df 100644 (file)
@@ -2133,6 +2133,15 @@ killed."
        (rename-buffer oname)))
     (unless (eq (current-buffer) obuf)
       (with-current-buffer obuf
+       (unless (get-buffer oname)
+         ;; Restore original's buffer name so 'kill-buffer' can use it
+         ;; to assign its last name (Bug#68235).
+         (rename-buffer oname))
+       ;; Restore original buffer's file names so they can be still
+       ;; used when referencing the now defunct buffer (Bug#68235).
+       (setq buffer-file-name ofile)
+       (setq buffer-file-number onum)
+       (setq buffer-file-truename otrue)
        ;; We already ran these; don't run them again.
        (let (kill-buffer-query-functions kill-buffer-hook)
          (kill-buffer obuf))))))