
¿Cómo restaurar las ventanas y los buffers de Emacs desde la última sesión?
El comportamiento que quiero es como en el navegador web, donde puedes restaurar todas las pestañas de la última sesión.
Respuesta1
Además deautomáticamenterestaurando tuúltima sesión de Emacsestado, también puede guardar cualquier número de estados de sesión y restaurarlos a pedido en cualquier otra sesión, cualquier número de veces. IOW, puedes cambiar fácilmente entrediferentes escritorios.
La forma más sencilla de hacerlo es cargar la biblioteca.Marcar+y use la tecla C-x r K
para guardar el estado de la sesión actual como marcador del escritorio. Luego puede restaurar cualquier marcador del escritorio en cualquier sesión usando la tecla C-x j K
.
Respuesta2
vaya a su archivo .emacs y escriba (desktop-save-mode 1). Esto guardará todos los buffers actuales en un archivo de "escritorio", no guardará el diseño real de sus marcos, pero puede buscar en los "registros" para eso.
Respuesta3
Aquí hay un código para hacerlo. Para que el código funcione, necesita tener instalada la biblioteca Lisp "tapiz". Si utiliza el programa de correo VM, ya tiene la biblioteca instalada. De lo contrario puedesdescárgalo desde aquí.
Coloque el siguiente código en su archivo .emacs. Cuando desee restaurar la configuración de ventanas y marcos de su última sesión de Emacs, escriba M-x load-my-tapestry RET
.
(require 'tapestry)
(defvar my-tapestry-file "~/.tapestry")
(defun load-my-tapestry ()
(interactive)
(let ((b (find-file-noselect my-tapestry-file)))
(sit-for 0)
(set-tapestry (read b))
(kill-buffer b)))
(defun save-my-tapestry ()
(interactive)
(let ((tap (tapestry)))
(with-temp-buffer
(let ((standard-output (current-buffer)))
(setcar tap (make-list (length (car tap)) nil))
(print tap)
(write-region (point-min) (point-max) my-tapestry-file)))))
(add-hook 'kill-emacs-hook 'save-my-tapestry)