[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r113483: lisp/desktop.el: Make some frame-restoring
From: |
Juanma Barranquero |
Subject: |
[Emacs-diffs] trunk r113483: lisp/desktop.el: Make some frame-restoring functions public. |
Date: |
Sun, 21 Jul 2013 17:45:31 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 113483
revision-id: address@hidden
parent: address@hidden
committer: Juanma Barranquero <address@hidden>
branch nick: trunk
timestamp: Sun 2013-07-21 19:45:12 +0200
message:
lisp/desktop.el: Make some frame-restoring functions public.
(desktop-saved-frame-states): Rename from desktop--saved-states;
all users changed.
(desktop-save-frames): Rename from desktop--save-frames.
Do not save state to desktop file.
(desktop-save): Save desktop-saved-frame-states to desktop file
and reset to nil.
(desktop-restoring-frames-p): New function.
(desktop-restore-frames): Use it. Rename from desktop--restore-frames.
(desktop-read): Use desktop-restoring-frames-p. Do not try to fix
buffer-lists when restoring frames. Suggested by Martin Rudalics.
modified:
lisp/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1432
lisp/desktop.el desktop.el-20091113204419-o5vbwnq5f7feedwu-591
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2013-07-21 02:53:19 +0000
+++ b/lisp/ChangeLog 2013-07-21 17:45:12 +0000
@@ -1,5 +1,16 @@
2013-07-21 Juanma Barranquero <address@hidden>
+ * desktop.el (desktop-saved-frame-states):
+ Rename from desktop--saved-states; all users changed.
+ (desktop-save-frames): Rename from desktop--save-frames.
+ Do not save state to desktop file.
+ (desktop-save): Save desktop-saved-frame-states to desktop file
+ and reset to nil.
+ (desktop-restoring-frames-p): New function.
+ (desktop-restore-frames): Use it. Rename from desktop--restore-frames.
+ (desktop-read): Use desktop-restoring-frames-p. Do not try to fix
+ buffer-lists when restoring frames. Suggested by Martin Rudalics.
+
* desktop.el: Correctly restore iconified frames.
(desktop--filter-iconified-position): New function.
(desktop-filter-parameters-alist): Add entries for `top' and `left'.
=== modified file 'lisp/desktop.el'
--- a/lisp/desktop.el 2013-07-21 04:22:33 +0000
+++ b/lisp/desktop.el 2013-07-21 17:45:12 +0000
@@ -578,8 +578,9 @@
"Checksum of the last auto-saved contents of the desktop file.
Used to avoid writing contents unchanged between auto-saves.")
-(defvar desktop--saved-states nil
- "Saved window/frame state. Internal use only.")
+(defvar desktop-saved-frame-states nil
+ "Saved state of all frames.
+Only valid during frame saving & restoring; intended for internal use.")
;; ----------------------------------------------------------------------------
;; Desktop file conflict detection
@@ -1077,20 +1078,16 @@
(this (cadr (frame-parameter mb-frame 'desktop-mini))))
(set-frame-parameter frame 'desktop-mini (list nil this nil)))))))
-(defun desktop--save-frames ()
- "Save window/frame state, as a global variable.
-Intended to be called from `desktop-save'.
-Internal use only."
- (setq desktop--saved-states
+(defun desktop-save-frames ()
+ "Save frame state in `desktop-saved-frame-states'."
+ (setq desktop-saved-frame-states
(and desktop-restore-frames
(progn
(desktop--save-minibuffer-frames)
(mapcar (lambda (frame)
(cons (desktop--filter-frame-parms (frame-parameters
frame) t)
(window-state-get (frame-root-window frame) t)))
- (frame-list)))))
- (unless (memq 'desktop--saved-states desktop-globals-to-save)
- (desktop-outvar 'desktop--saved-states)))
+ (frame-list))))))
;;;###autoload
(defun desktop-save (dirname &optional release auto-save)
@@ -1132,8 +1129,11 @@
(insert "\n;; Global section:\n")
;; Called here because we save the window/frame state as a global
;; variable for compatibility with previous Emacsen.
- (desktop--save-frames)
+ (desktop-save-frames)
+ (unless (memq 'desktop-saved-frame-states desktop-globals-to-save)
+ (desktop-outvar 'desktop-saved-frame-states))
(mapc (function desktop-outvar) desktop-globals-to-save)
+ (setq desktop-saved-frame-states nil) ; after saving
desktop-globals-to-save
(when (memq 'kill-ring desktop-globals-to-save)
(insert
"(setq kill-ring-yank-pointer (nthcdr "
@@ -1318,10 +1318,15 @@
((null (car dm1)) nil)
(t (< (cadr dm1) (cadr dm2))))))
-(defun desktop--restore-frames ()
+(defun desktop-restoring-frames-p ()
+ "True if calling `desktop-restore-frames' will actually restore frames."
+ (and desktop-restore-frames desktop-saved-frame-states))
+
+(defun desktop-restore-frames ()
"Restore window/frame configuration.
-Internal use only."
- (when (and desktop-restore-frames desktop--saved-states)
+This function depends on the value of `desktop-saved-frame-states'
+being set (usually, by reading it from the desktop)."
+ (when (desktop-restoring-frames-p)
(let* ((frame-mb-map nil) ;; Alist of frames with their own minibuffer
(visible nil)
(delete-saved (eq desktop-restore-in-current-display 'delete))
@@ -1330,12 +1335,13 @@
;; Sorting saved states allows us to easily restore minibuffer-owning
frames
;; before minibufferless ones.
- (setq desktop--saved-states (sort desktop--saved-states
#'desktop--sort-states))
+ (setq desktop-saved-frame-states (sort desktop-saved-frame-states
+ #'desktop--sort-states))
;; Potentially all existing frames are reusable. Later we will decide
which ones
;; to reuse, and how to deal with any leftover.
(setq desktop--reuse-list (frame-list))
- (dolist (state desktop--saved-states)
+ (dolist (state desktop-saved-frame-states)
(condition-case err
(let* ((frame-cfg (car state))
(window-cfg (cdr state))
@@ -1465,16 +1471,17 @@
(file-error (message "Couldn't record use of desktop file")
(sit-for 1))))
- ;; `desktop-create-buffer' puts buffers at end of the buffer list.
- ;; We want buffers existing prior to evaluating the desktop (and
- ;; not reused) to be placed at the end of the buffer list, so we
- ;; move them here.
- (mapc 'bury-buffer
- (nreverse (cdr (memq desktop-first-buffer (nreverse
(buffer-list))))))
- (switch-to-buffer (car (buffer-list)))
+ (unless (desktop-restoring-frames-p)
+ ;; `desktop-create-buffer' puts buffers at end of the buffer list.
+ ;; We want buffers existing prior to evaluating the desktop (and
+ ;; not reused) to be placed at the end of the buffer list, so we
+ ;; move them here.
+ (mapc 'bury-buffer
+ (nreverse (cdr (memq desktop-first-buffer (nreverse
(buffer-list))))))
+ (switch-to-buffer (car (buffer-list))))
(run-hooks 'desktop-delay-hook)
(setq desktop-delay-hook nil)
- (desktop--restore-frames)
+ (desktop-restore-frames)
(run-hooks 'desktop-after-read-hook)
(message "Desktop: %d buffer%s restored%s%s."
desktop-buffer-ok-count
@@ -1486,18 +1493,19 @@
(format ", %d to restore lazily"
(length desktop-buffer-args-list))
""))
- ;; Bury the *Messages* buffer to not reshow it when burying
- ;; the buffer we switched to above.
- (when (buffer-live-p (get-buffer "*Messages*"))
- (bury-buffer "*Messages*"))
- ;; Clear all windows' previous and next buffers, these have
- ;; been corrupted by the `switch-to-buffer' calls in
- ;; `desktop-restore-file-buffer' (bug#11556). This is a
- ;; brute force fix and should be replaced by a more subtle
- ;; strategy eventually.
- (walk-window-tree (lambda (window)
- (set-window-prev-buffers window nil)
- (set-window-next-buffers window nil)))
+ (unless (desktop-restoring-frames-p)
+ ;; Bury the *Messages* buffer to not reshow it when burying
+ ;; the buffer we switched to above.
+ (when (buffer-live-p (get-buffer "*Messages*"))
+ (bury-buffer "*Messages*"))
+ ;; Clear all windows' previous and next buffers, these have
+ ;; been corrupted by the `switch-to-buffer' calls in
+ ;; `desktop-restore-file-buffer' (bug#11556). This is a
+ ;; brute force fix and should be replaced by a more subtle
+ ;; strategy eventually.
+ (walk-window-tree (lambda (window)
+ (set-window-prev-buffers window nil)
+ (set-window-next-buffers window nil))))
t))
;; No desktop file found.
(desktop-clear)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r113483: lisp/desktop.el: Make some frame-restoring functions public.,
Juanma Barranquero <=