[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/lisp files.el ChangeLog
From: |
Karl Fogel |
Subject: |
[Emacs-diffs] emacs/lisp files.el ChangeLog |
Date: |
Sat, 05 Sep 2009 16:25:32 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Karl Fogel <kfogel> 09/09/05 16:25:31
Modified files:
lisp : files.el ChangeLog
Log message:
* 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)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/files.el?cvsroot=emacs&r1=1.1077&r2=1.1078
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.16099&r2=1.16100
Patches:
Index: files.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/files.el,v
retrieving revision 1.1077
retrieving revision 1.1078
diff -u -b -r1.1077 -r1.1078
--- files.el 5 Sep 2009 15:16:49 -0000 1.1077
+++ files.el 5 Sep 2009 16:25:27 -0000 1.1078
@@ -1493,6 +1493,17 @@
(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 @@
(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)
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.16099
retrieving revision 1.16100
diff -u -b -r1.16099 -r1.16100
--- ChangeLog 5 Sep 2009 15:16:50 -0000 1.16099
+++ ChangeLog 5 Sep 2009 16:25:28 -0000 1.16100
@@ -1,5 +1,12 @@
2009-09-05 Karl Fogel <address@hidden>
+ * 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 <address@hidden>
+
* files.el (find-alternate-file): If the old buffer is modified
and visiting a file, behave similarly to `kill-buffer' when
killing it, thus reverting to the pre-1.878 behavior; see