diff --git a/src/workgroups-session.el b/src/workgroups-session.el index 41bfb95eca9afd8fdd27d53786cc698796014739..84edb9796dcdc705666513cfee466c53e2a9448d 100644 --- a/src/workgroups-session.el +++ b/src/workgroups-session.el @@ -113,8 +113,21 @@ Think of it as `write-file' for Workgroups sessions." (wg-perform-session-maintenance) (setf (wg-session-file-name (wg-current-session)) filename) (setf (wg-session-version (wg-current-session)) wg-version) + + ;; Save opened frames as a session parameter "frame-list". + ;; Exclude `selected-frame' and daemon one (if any). + ;; http://stackoverflow.com/questions/21151992/why-emacs-as-daemon-gives-1-more-frame-than-is-opened (if wg-control-frames - (wg-save-frames)) + (let ((fl (frame-list))) + (mapc (lambda (frame) + (if (string-equal "initial_terminal" (terminal-name frame)) + (delete frame fl))) fl) + (setq fl (delete (selected-frame) fl)) + (if (wg-current-session t) + (wg-set-session-parameter (wg-current-session t) + 'frame-list + (mapcar 'wg-frame-to-wconfig fl))))) + (wg-write-sexp-to-file (wg-pickel-all-session-parameters (wg-current-session)) filename) @@ -268,22 +281,6 @@ resolved by Emacs." (wg-save-session) (wg-query-and-save-if-modified))))) -(defun wg-save-frames () - "Save opened frames as a session parameter. -Exclude `selected-frame' and daemon one (if any). -http://stackoverflow.com/questions/21151992/why-emacs-as-daemon-gives-1-more-frame-than-is-opened" - (interactive) - (let ((fl (frame-list))) - (mapc (lambda (frame) - (if (string-equal "initial_terminal" (terminal-name frame)) - (delete frame fl))) fl) - (setq fl (delete (selected-frame) fl)) - (if (wg-current-session t) - (wg-set-session-parameter (wg-current-session t) - 'frame-list - (mapcar 'wg-frame-to-wconfig fl))))) - - (defun wg-reload-session () "Reload current workgroups session." (interactive)