[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r116484: lisp/frameset.el (frameset-restore): Remove
From: |
Juanma Barranquero |
Subject: |
[Emacs-diffs] trunk r116484: lisp/frameset.el (frameset-restore): Remove duplicate ids only when needed. |
Date: |
Wed, 19 Feb 2014 21:04:16 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 116484
revision-id: address@hidden
parent: address@hidden
committer: Juanma Barranquero <address@hidden>
branch nick: trunk
timestamp: Wed 2014-02-19 22:04:06 +0100
message:
lisp/frameset.el (frameset-restore): Remove duplicate ids only when needed.
modified:
lisp/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1432
lisp/frameset.el frameset.el-20130802043218-tfwraxv1c2zlibpw-1
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2014-02-19 19:24:32 +0000
+++ b/lisp/ChangeLog 2014-02-19 21:04:06 +0000
@@ -1,3 +1,8 @@
+2014-02-19 Juanma Barranquero <address@hidden>
+
+ * frameset.el (frameset-restore): Delay removing an old frame's
+ duplicate id until the new frame has been correctly created.
+
2014-02-19 Michael Albinus <address@hidden>
* net/tramp.el (tramp-handle-make-symbolic-link): New defun.
=== modified file 'lisp/frameset.el'
--- a/lisp/frameset.el 2014-02-19 11:01:35 +0000
+++ b/lisp/frameset.el 2014-02-19 21:04:06 +0000
@@ -1116,7 +1116,7 @@
(force-display (if (functionp force-display)
(funcall force-display frame-cfg
window-cfg)
force-display))
- frame to-tty)
+ frame to-tty duplicate)
;; Only set target if forcing displays and the target display
is different.
(cond ((frameset-keep-original-display-p force-display)
(setq frameset--target-display nil))
@@ -1134,16 +1134,14 @@
(or (eq force-display :delete)
(and to-tty
(eq (cdr (assq 'minibuffer frame-cfg))
'only))))
- ;; If keeping non-reusable frames, and the frameset--id of
one of them
- ;; matches the id of a frame being restored (because, for
example, the
- ;; frameset has already been read in the same session),
remove the
- ;; frameset--id from the non-reusable frame, which is not
useful anymore.
- (when (and other-frames
- (or (eq reuse-frames :keep) (consp reuse-frames)))
- (let ((dup (frameset-frame-with-id (frameset-cfg-id
frame-cfg)
- other-frames)))
- (when dup
- (set-frame-parameter dup 'frameset--id nil))))
+ ;; To avoid duplicating frame ids after restoration, we note
any
+ ;; existing frame whose id matches a frame configuration in
the
+ ;; frameset. Once the frame config is properly restored, we
can
+ ;; reset the old frame's id to nil.
+ (setq duplicate (and other-frames
+ (or (eq reuse-frames :keep) (consp
reuse-frames))
+ (frameset-frame-with-id (frameset-cfg-id
frame-cfg)
+ other-frames)))
;; Restore minibuffers. Some of this stuff could be done in
a filter
;; function, but it would be messy because restoring
minibuffers affects
;; global state; it's best to do it here than add a bunch of
global
@@ -1177,6 +1175,9 @@
(setq frame (frameset--restore-frame frame-cfg window-cfg
(or filters
frameset-filter-alist)
force-onscreen))
+ ;; Now reset any duplicate frameset--id
+ (when (and duplicate (not (eq frame duplicate)))
+ (set-frame-parameter duplicate 'frameset--id nil))
;; Set default-minibuffer if required.
(when default (setq default-minibuffer-frame frame))))
(error
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r116484: lisp/frameset.el (frameset-restore): Remove duplicate ids only when needed.,
Juanma Barranquero <=