Save and restore the tabs and split frame

I have a lot elscreen tabs (frames?), Which are divided horizontally and vertically. I would like to be able to save the current buffer, the location of windows in each frame and the frames themselves.

In short, I would like to be able to close and re-open emacs with respect to the same condition as at the close.

(I think it was the correct terminology)

+6
source share
1 answer

Here's what I have in my .emacs for this purpose (inline sources):

automatic save and restore sessions elscreen

;; http://stackoverflow.com/questions/803812/emacs-reopen-buffers-from-last-session-on-startup (defvar emacs-configuration-directory "~/.emacs.d/" "The directory where the emacs configuration files are stored.") (defvar elscreen-tab-configuration-store-filename (concat emacs-configuration-directory ".elscreen") "The file where the elscreen tab configuration is stored.") 

elscreen autosave on exit:

 (defun elscreen-store () "Store the elscreen tab configuration." (interactive) (if (desktop-save emacs-configuration-directory) (with-temp-file elscreen-tab-configuration-store-filename (insert (prin1-to-string (elscreen-get-screen-to-name-alist)))))) ;; (push #'elscreen-store kill-emacs-hook) configuration-directory) (defun elscreen-store () "Store the elscreen tab configuration." (interactive) (if (desktop-save emacs-configuration-directory) (with-temp-file elscreen-tab-configuration-store-filename (insert (prin1-to-string (elscreen-get-screen-to-name-alist)))))) ;; (push #'elscreen-store kill-emacs-hook) tab-configuration-store-filename (defun elscreen-store () "Store the elscreen tab configuration." (interactive) (if (desktop-save emacs-configuration-directory) (with-temp-file elscreen-tab-configuration-store-filename (insert (prin1-to-string (elscreen-get-screen-to-name-alist)))))) ;; (push #'elscreen-store kill-emacs-hook) 

elscreen auto repair on startup:

 (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) tt)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) ;; (elscreen-restore) tab-configuration-store-filename) (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) tt)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) ;; (elscreen-restore) )) (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) tt)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) ;; (elscreen-restore) ))) (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) tt)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) ;; (elscreen-restore) cdr (car screens)) ":")) (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) tt)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) ;; (elscreen-restore) buffers)) (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) tt)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) ;; (elscreen-restore) -by-buffer (car buffers) tt)) (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) tt)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) ;; (elscreen-restore) -window (car (cdr buffers))) (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) tt)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) ;; (elscreen-restore) ) (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) tt)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) ;; (elscreen-restore) )))) (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) tt)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) ;; (elscreen-restore) 
+5
source

All Articles