恢复Emacs会话/桌面

时间:2010-04-24 08:27:18

标签: emacs ide dot-emacs session-management

我一直在寻找如何恢复emacs会话,没有运气。我正在寻找恢复所有以前打开的缓冲区,其中一些可能包含erc,shell,目录列表,文件等。

每次打开emacs,我都会花很多时间来安排我的缓冲区;将它们分成行和列,打开一个外壳,安排irc通道。上班需要一段时间。

我已尝试将以下内容添加到我的init.el

(desktop-save-mode 1)

然后使用 M-x桌面保存。这似乎只能恢复打开的文件,而不是shell或缓冲区中运行的任何其他内容。

我还检查了以下问题:

阅读:

这是我的emacs会话的screenshot example

一个简单的答案就是专注于实际工作:P

3 个答案:

答案 0 :(得分:8)

我建议一个简单的解决方案 - 创建一个设置首选布局的函数。例如,我喜欢在屏幕的后半部分在单独的窗口中放置一些IRC频道,以便我可以不时地查看它们,同时在另一个窗口中进行编码。所以我写了一些简单的代码来处理窗口拆分并按我的意愿安排我的缓冲区:

;; 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")))

代码非常简单,没有错误检查,但它会给你一个关于我的意思的提示。

您可能还想考虑使用registers来存储一些窗口配置。

答案 1 :(得分:4)

正如您所发现的,desktop.el和session.el是一个良好的开端,但它们不会恢复窗口布局。

但是,使用revive.el可以保存/恢复任意窗口配置,这些配置会在重新启动之间记住。

还要查看与窗口布局相关的these hints,其中包括获胜者模式以及将窗口配置保存到寄存器中的技巧。

答案 2 :(得分:2)

除了@ Bozhidar关于自动化窗口布局(我自己做)的出色答案之外,您可能还希望使用GNU Screen来查看可用于跨日志保留任意一组进程的问题。有一个非常好的教程here,因为你将使用emacs,你也想给this一个阅读。