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)
committerMartin Rudalics <rudalics@gmx.at>
Mon, 15 Apr 2024 09:17:51 +0000 (11:17 +0200)
* lisp/files.el (find-alternate-file): Before killing the previous
buffer, try to restore its name and filenames (Bug#68235).

lisp/files.el

index 20d63d33fef8fec88a6baaa6bce7218c5f4aa4af..1e11dd44bad1a96c14b015daa1a236982ff4c03b 100644 (file)
@@ -2113,6 +2113,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))))))