在守护程序上保存和恢复布局

时间:2017-09-14 12:50:22

标签: emacs

我知道使用lisp函数window-configuration-to-register和jump-to-register,以及desktop.el和winner-mode等软件包。

这些都可以用于在会话期间保存布局并在以后的某个时间恢复。我可以很好地使用它们。

但是,如果我在守护进程模式下运行并通过emacsclient连接 - 例如,如果我尝试将布局保存到寄存器中 - 我似乎无法在单独的emacsclient上恢复此布局使用上述任何方法的同一个守护进程 - 即使它们共享完全相同的窗口。

在关闭原始emacsclient会话后,是否有人可以建议使用lisp函数或任何其他方法来保留客户端窗口布局?

我应该添加我没有选择,只能在控制台中使用emacs。

更新

半回答我自己的问题 -

将帧配置保存到寄存器似乎有效:

C-x r f – frame-configuration-to-register
C-x r j – jump-to-register

它有点摇摇欲坠 - 当你跳回到寄存器时,你似乎必须使用' Cx 5 0' ....之后你仍然离开了使用基础客户端框架,您可以使用' Cx C-c'没有杀死守护进程。

如果你尝试使用其他方法直接退出寄存器存储的帧,它将完全不起作用,或者你将完全杀死该守护进程!

所以在我看来,跳转到寄存器似乎有点抓住守护进程的所有权。

所以后续问题: 1)有没有办法让守护进程更好一点? 2)当emacs客户端退出或死亡时,有没有办法自动将帧保存到寄存器(将在守护进程中保留)?

第二次更新

实际上已经使用了一天 - 以上并没有真正起作用 - 恢复窗口时行为是随机的 - 有时候它有效,而且通常不可能使用任何命令退出emacsclient!

我经常发现自己在emacsclient上运行kill - 这反过来会杀死守护进程以及客户端!

1 个答案:

答案 0 :(得分:0)

为了回答我自己的问题,并尝试了很多方法来实现上述目标,我发现一种方法至少到目前为止已证明稳定/可靠,即使使用守护进程 - 这是使用workgroups2 pacakge Melpa上有售。

我还注意到原始工作组包(其中workgroups2是一个更新的fork)也可以工作,但功能更有限。这也可以从Melpa获得。

您感兴趣的工作组2上的关键默认命令是:

{{1}}

我向您推荐手册以获取更多详细信息 - 我在下面的参考链接中包含了2个包

https://github.com/tlh/workgroups.el http://workgroups2.readthedocs.io/en/latest/