2010-04-24 15 views
13

He estado buscando cómo restaurar una sesión de emacs, sin suerte. Estoy buscando restaurar todos los búferes abiertos anteriormente, algunos de los cuales podrían contener erc, shells, listados de directorios, archivos, etc.Restaurar Emacs Session/Desktop

Cada vez que abro emacs, paso una cantidad considerable de tiempo organizando mis búferes; dividiéndolos en filas y columnas, abriendo un caparazón, arreglando los canales irc. Lleva un tiempo llegar al trabajo.

He intentado añadir lo siguiente a mi init.el

(desktop-save-mode 1) 

Y a continuación, utilizando M-x-escritorio guardar. Esto solo parece restaurar los archivos que están abiertos, no los shells o cualquier otra cosa que se ejecute dentro de los buffers.

También hemos comprobado las siguientes preguntas:

y leer a través de:

Aquí hay un screenshot example de mi sesión de emacs.

Una respuesta sencilla sería sólo se centran en el trabajo real: P

Respuesta

8

me gustaría sugerir una solución simple - crear una función que configura su diseño preferido. Por ejemplo, me gusta tener algunos canales de IRC en la segunda mitad de mi pantalla en ventanas separadas, de modo que pueda verlos de vez en cuando, mientras codigo, por ejemplo, en otra ventana. Por lo que he escrito algo de código sencillo para cuidar de la división de la ventana y organizar mis memorias intermedias como deseo:

;; show some buffers 
(defun show-some-buffers (buffer-list) 
    (split-window-horizontally) 
    (other-window 1) 
    (dolist (buffer buffer-list) 
    (split-window-vertically) 
    (switch-to-buffer (get-buffer buffer)) 
    (other-window 1)) 
    ;; at the end we have one extra window we need to delete 
    (delete-window) 
    (balance-windows)) 

;; show some erc buffers 
(defun show-erc-buffers() 
    (interactive) 
    (show-some-buffers '("#emacs" "#clojure"))) 

El código es bastante simple y cuenta con ninguna comprobación de errores, pero va a dar una pista acerca de lo Quiero decir.

Es posible que desee considerar el uso de registers y almacenar algunas configuraciones de ventana.

+0

Muchas gracias por la respuesta detallada. Con un poco de trabajo, estoy seguro de que podré tener una buena solución con este enfoque. Aclamaciones. –

+0

Muy buena solución modular. – aartist

2

Además de la excelente respuesta de @ Bozhidar para automatizar el diseño de su ventana (que yo mismo), también puede considerar utilizar GNU Screen que se puede utilizar para conservar un conjunto arbitrario de procesos entre inicios de sesión. Hay un tutorial bastante bueno, here, y dado que usará emacs, también querrá dar una lectura a this.

4

Como has encontrado, desktop.el y session.el son un buen comienzo, pero no restauran los diseños de las ventanas.

Sin embargo, usando revive.el puede guardar/restaurar configuraciones de ventanas arbitrarias, que se recuerdan entre reinicios.

Consulte también these hints en relación con los diseños de ventanas, que cubren el modo ganador y el truco de guardar las configuraciones de las ventanas en los registros.