emacs-diffs
[Top][All Lists]
Advanced

[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




reply via email to

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