如题,我使用了 purcell 的配置文件后,发现在打开 Emacs 时,Emacs 会自动回到上一次使用 Emacs 时的状态。它在启动时会读取一个 .session
文件来回到这个状态。“状态” 指的是编辑的文件、窗口的大小等。如何配置 Emacs 以达到这样的效果?
好吧,原来没有藏那么深。
善用搜索喔。
嗯,是的。我原来就没想过要搜索,因为毕竟是大师的配置,有关配置的函数定是藏得很深,于是便怀着恐惧感来问了。
大师之说从何时起?
我用的第1个配置就是purcell的,挺好用的,皮实。现在在用Spacemacs,editor style还是Emacs,也挺好用,配置其他如LaTeX等更方便,频繁更新时容易出问题。
奇怪的是,像doom-emacs、Spacemacs这样star数更多的作者我却没记住,倒是能记住Purcell,这些人也好像没人称大师。
没有必要这样,其实就算doom那种配置乍一看感觉整得很花的,,其实只是用了很多自创的语法糖,能整出一个emacs starter-kit的都是很强的hacker,把简单事情搞复杂是他们恰恰不会去做的,doom整那么多语法糖(其实就是宏)是为了简化工作量。抄就完事了,攒配置这方面抄是效率最高的
(setq desktop-save t)
;; Restore desktop, should be worked in daemon too.
(defun +restore-desktop()
(let ((inhibit-message t))
(run-at-time 1 nil
(lambda()
(desktop-read)
(desktop-save-mode 1)))))
(add-hook 'emacs-startup-hook
(lambda()
(if (daemonp)
(add-hook 'server-after-make-frame-hook '+restore-desktop)
(+restore-desktop))))
哦,这是陈斌称呼这个人为大师的,我同意他的称呼。他们都没自称大师,是我这样擅自这么称呼的,出于尊敬。
这个方法和 purcell 的做法效果差不多,谢谢。
嗯,虽说直接抄的效率高,我个人也倾向于直接使用别人的配置,但是我发现自己有别的各种需求,等不到别人来实现了,所以我就打算多学习一下 elisp ,来达到自己的使用目的。
刚好昨天整理了一下 desktop 相关的配置,供 lz 参考:
(use-package desktop
:commands restart-emacs-without-desktop
:init (desktop-save-mode)
:config
;; inhibit no-loaded prompt
(setq desktop-file-modtime (file-attribute-modification-time
(file-attributes
(desktop-full-file-name)))
desktop-lazy-verbose nil
desktop-load-locked-desktop t
desktop-restore-eager 1
desktop-restore-frames nil
desktop-save t)
(defun restart-emacs-without-desktop (&optional args)
"Restart emacs without desktop."
(interactive)
(restart-emacs (cons "--no-desktop" args))))
哦,谢谢!我最近很少逛论坛,最近翻邮箱才看到。
desktop 已经可以实现恢复上次打开的文件。但我看Purcell 还在用session.el 这个很老的包。
请问下这个session.el 是恢复什么的?看官网介绍感觉和Desktop 功能重复了。
感觉 desktop 存的东西多点,然后 session 存的东西也可以通过 desktop-globals-to-save
或者 savehist(据说有性能或者内存泄漏问题)存,我看 Purcell 也用了,所以我也不太懂为啥他还在用 session。
这样的话,确实没必要用 session 这个包了,拖慢Emcas启动。
Mac 和 Linux 上恢复desktop 很快,但是 Windows下 恢复的很慢很慢。