尝试使用persp-mode https://github.com/Bad-ptr/persp-mode.el/blob/master/persp-mode.el在重新启动后检索emacs窗口会话。无法让它发挥作用。
尝试通过阅读源代码来了解用于存储emacs状态的数据结构。
以下是用于存储会话状态的函数。
(defun* persp-save-state-to-file (&optional (fname persp-auto-save-fname)
(phash *persp-hash*)
respect-persp-file-parameter)
(interactive (list (read-file-name "Save perspectives to file: "
persp-save-dir)))
在上面的函数中,使用edebug观察到两个不寻常的事情(根据我目前对elisp的理解,这是不寻常的)。
评估可选参数表达式。
首先评估表达式“(interactive ...”,然后评估可选参数表达式。
任何想法如何调试代码。此外,emacs文档称“defun *”与common-lisp相关,但emacs文档中没有关于defun *与defun的不同之处的更多信息。有没有一个快速的教程哦defun *做什么而不必学习common-lisp。
答案 0 :(得分:3)
Emacs说:
将NAME定义为函数。像普通的'defun'一样,除了ARGLIST允许 完整的Common Lisp约定,BODY隐式包围 (cl-block NAME ...)。
Common Lisp arglists提供可选,rest,keyword和aux参数。从历史上看,它来自Lisp Machine Lisp和Mumble--两种早期的Lisp方言。
有关详细信息,请参阅:http://www.gnu.org/software/emacs/manual/html_node/cl/Argument-Lists.html
答案 1 :(得分:1)
请查看this post,了解简单的代码段解释
如何选择工作。要点是,例如, persp-auto-save-fname
将是fname
的值
如果没有给出。
显然必须首先运行interactive
,因为它提供了参数。
因此,如果interactive
未提供fname
的值,则persp-auto-save-fname
将为{{1}}。