2010-04-24 227 views
13

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

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

我试着添加以下到我的init.el

(desktop-save-mode 1) 

,然后使用M-X桌面保存。这似乎只恢复文件是开放的,而不是外壳或缓冲区内运行的任何其他东西。

我也检查了以下几个问题:

而且通读:

这是我的emacs会话的screenshot example

简单的回答是只专注于真正的工作:P

回答

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以保存一些窗口配置。

+0

非常感谢您的详细回复。通过一些工作,我相信我能用这种方法获得一个很好的解决方案。干杯。 – 2010-04-26 02:56:33

+0

非常好的模块化解决方案。 – aartist 2017-12-27 17:59:48

2

除了@ Bozhidar关于自动化窗口布局(我自己做的)的出色答案之外,您还可以考虑使用GNU Screen,它可以用来保留跨日志插入的任意一组进程。有一个相当不错的教程here,因为你会使用emacs你也想给this一个阅读。

4

正如您发现的那样,desktop.el和session.el是一个不错的开始,但它们不会恢复窗口布局。

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

另外检查出these hints有关窗口布局,其中涵盖赢家模式和将窗口配置保存到寄存器的技巧。