emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r107181: In server-unselect-display d


From: martin rudalics
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r107181: In server-unselect-display don't inadvertently kill current buffer. (Bug#10729)
Date: Wed, 08 Feb 2012 09:02:17 +0100
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 107181
committer: martin rudalics <address@hidden>
branch nick: trunk
timestamp: Wed 2012-02-08 09:02:17 +0100
message:
  In server-unselect-display don't inadvertently kill current buffer. 
(Bug#10729)
  
  * server.el (server-unselect-display): Don't inadvertently kill
  the current buffer.  (Bug#10729)
modified:
  lisp/ChangeLog
  lisp/server.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-02-08 07:54:09 +0000
+++ b/lisp/ChangeLog    2012-02-08 08:02:17 +0000
@@ -1,3 +1,8 @@
+2012-02-08  Martin Rudalics  <address@hidden>
+
+       * server.el (server-unselect-display): Don't inadvertently kill
+       the current buffer.  (Bug#10729)
+
 2012-02-08  Glenn Morris  <address@hidden>
 
        * progmodes/sql.el (sql-port, sql-connection-alist, sql-list-all)

=== modified file 'lisp/server.el'
--- a/lisp/server.el    2012-02-02 07:48:39 +0000
+++ b/lisp/server.el    2012-02-08 08:02:17 +0000
@@ -399,16 +399,18 @@
     ;; visible.  If not (which can happen if the user's customizations call
     ;; pop-to-buffer etc.), delete it to avoid preserving the connection after
     ;; the last real frame is deleted.
-    (if (and (eq (frame-first-window frame)
-                 (next-window (frame-first-window frame) 'nomini))
-             (eq (window-buffer (frame-first-window frame))
-                 (frame-parameter frame 'server-dummy-buffer)))
-        ;; The temp frame still only shows one buffer, and that is the
-        ;; internal temp buffer.
-        (delete-frame frame)
-      (set-frame-parameter frame 'visibility t))
-    (kill-buffer (frame-parameter frame 'server-dummy-buffer))
-    (set-frame-parameter frame 'server-dummy-buffer nil)))
+
+    ;; Rewritten to avoid inadvertently killing the current buffer after
+    ;; `delete-frame' removed FRAME (Bug#10729).
+    (let ((buffer (frame-parameter frame 'server-dummy-buffer)))
+      (if (and (one-window-p 'nomini frame)
+              (eq (window-buffer (frame-first-window frame)) buffer))
+         ;; The temp frame still only shows one buffer, and that is the
+         ;; internal temp buffer.
+         (delete-frame frame)
+       (set-frame-parameter frame 'visibility t)
+       (set-frame-parameter frame 'server-dummy-buffer nil))
+      (kill-buffer buffer))))
 
 (defun server-handle-delete-frame (frame)
   "Delete the client connection when the emacsclient frame is deleted.


reply via email to

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