mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-28 07:45:00 +00:00
* lisp/files.el (find-alternate-file): Run `kill-buffer-hook' manually
before killing the old buffer, since by the time `kill-buffer' is run so many buffer variables have been set to nil that it may not behave as expected. (Bug#4061)
This commit is contained in:
parent
ef7ef2a016
commit
049a231b91
@ -1,3 +1,10 @@
|
||||
2009-09-05 Karl Fogel <kfogel@red-bean.com>
|
||||
|
||||
* files.el (find-alternate-file): Run `kill-buffer-hook' manually
|
||||
before killing the old buffer, since by the time `kill-buffer' is
|
||||
run so many buffer variables have been set to nil that it may not
|
||||
behave as expected. (Bug#4061)
|
||||
|
||||
2009-09-05 Karl Fogel <kfogel@red-bean.com>
|
||||
|
||||
* files.el (find-alternate-file): If the old buffer is modified
|
||||
|
@ -1493,6 +1493,17 @@ killed."
|
||||
(odir dired-directory)
|
||||
(otrue buffer-file-truename)
|
||||
(oname (buffer-name)))
|
||||
;; Run `kill-buffer-hook' here. It needs to happen before
|
||||
;; variables like `buffer-file-name' etc are set to nil below,
|
||||
;; because some of the hooks that could be invoked
|
||||
;; (e.g., `save-place-to-alist') depend on those variables.
|
||||
;;
|
||||
;; Note that `kill-buffer-hook' is not what queries whether to
|
||||
;; save a modified buffer visiting a file. Rather, `kill-buffer'
|
||||
;; asks that itself. Thus, there's no need to temporarily do
|
||||
;; `(set-buffer-modified-p nil)' before running this hook.
|
||||
(run-hooks 'kill-buffer-hook)
|
||||
;; Okay, now we can end-of-life the old buffer.
|
||||
(if (get-buffer " **lose**")
|
||||
(kill-buffer " **lose**"))
|
||||
(rename-buffer " **lose**")
|
||||
@ -1520,8 +1531,8 @@ killed."
|
||||
(rename-buffer oname)))
|
||||
(unless (eq (current-buffer) obuf)
|
||||
(with-current-buffer obuf
|
||||
;; We already asked; don't ask again.
|
||||
(let ((kill-buffer-query-functions))
|
||||
;; We already ran these; don't run them again.
|
||||
(let (kill-buffer-query-functions kill-buffer-hook)
|
||||
(kill-buffer obuf))))))
|
||||
|
||||
(defun create-file-buffer (filename)
|
||||
|
Loading…
Reference in New Issue
Block a user