【发布时间】:2020-03-10 03:36:59
【问题描述】:
对象:在终端中,在启动时,在一帧中,恢复 emacs 工作区。即将所有“窗口”恢复到 C-x C-c 之前的状态。
说明:在 emacs GUI 中可以简单地通过在 init.el 文件中添加(desktop-save-mode 1) 来完成窗口恢复。
但是,当将 emacs 作为守护进程运行时,emacsclient 的执行方式不同。同样的设置,它仍然记得文件的主要模式,以及退出前的其他缓冲区,但不会恢复窗口布局。根据默认设置,仅显示 1 个主窗口。
我做了一些研究,使用 elisp 内置文档研究了一些函数/变量。我检查了(desktop-save-buffer 1)、framset-save、framset-restore,但它们似乎都不起作用。我还检查了之前发布的类似问题,并使用以下脚本找到了某人的答案:
(setq desktop-restore-forces-onscreen nil)
(add-hook 'desktop-after-read-hook
(lambda ()
(frameset-restore
desktop-saved-frameset
:reuse-frames (eq desktop-restore-reuses-frames t)
:cleanup-frames (not (eq desktop-restore-reuses-frames 'keep))
:force-display desktop-restore-in-current-display
:force-onscreen desktop-restore-forces-onscreen)))
但是这个脚本有问题,它会打开一个“GUI”框架,并且无法正确关闭(关闭时自动重新打开,如果可能的话,我更喜欢在终端中打开框架,以便终端“文本编辑器”设置是可能的,还有其他一些小优点)。 很抱歉这个乏味的问题,任何帮助将不胜感激。
【问题讨论】:
标签: terminal emacs window frame