如何从上次会话恢复 Emacs 的窗口和缓冲区?
我想要的行为就像在网络浏览器中一样,你可以恢复上次会话中的所有选项卡。
答案1
此外自动地恢复你的最后一个 Emacs 会话状态,您还可以保存任意数量的会话状态,并在任何其他会话中根据需要恢复它们,次数不限。换句话说,您可以轻松地在不同的桌面。
最简单的方法是加载库书签+并使用 key C-x r K
将当前会话状态保存为桌面书签。然后,您可以使用 key 恢复任何会话中的任何桌面书签C-x j K
。
答案2
转到您的 .emacs 文件并输入(desktop-save-mode 1),这会将所有当前缓冲区保存到“桌面”文件,它不会保存您的框架的实际布局,但您可以查看“寄存器”。
答案3
以下是一些代码。要使代码运行,您需要安装“tapestry”Lisp 库。如果您使用 VM 邮件程序,则您已经安装了该库。否则,您可以从这里下载。
将以下代码放入您的 .emacs 文件中。当您想要从上次 Emacs 会话恢复窗口和框架设置时,请键入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)