Elisp:如果启动时出错,是否可以自动打开Emacs初始化文件?
这里的想法是:如果我在更改Emacs init文件后重新启动Emacs,如果在启动时出现错误,Emacs会自动打开我的init文件进行编辑,这将非常方便 例如,如果启动时出现错误,Emacs可以在一个窗口中显示错误/调试消息,在另一个窗口中显示我的init文件Elisp:如果启动时出错,是否可以自动打开Emacs初始化文件?,emacs,error-handling,elisp,Emacs,Error Handling,Elisp,这里的想法是:如果我在更改Emacs init文件后重新启动Emacs,如果在启动时出现错误,Emacs会自动打开我的init文件进行编辑,这将非常方便 例如,如果启动时出现错误,Emacs可以在一个窗口中显示错误/调试消息,在另一个窗口中显示我的init文件 我是Emacs Lisp新手,不熟悉错误处理过程。是否有任何可能有用的错误处理机制/设置?(老实说,我不知道从哪里开始这篇文章,因此这篇文章中没有任何实验性的代码…如果你真的想这么做,你可以试试这个: 将init文件的内容包装在此,其中c
我是Emacs Lisp新手,不熟悉错误处理过程。是否有任何可能有用的错误处理机制/设置?(老实说,我不知道从哪里开始这篇文章,因此这篇文章中没有任何实验性的代码…如果你真的想这么做,你可以试试这个: 将init文件的内容包装在此,其中
contents
是原始init文件,file是init文件的绝对名称(即位置):
(condition-case err
(progn
(setq debug-on-error t)
CONTENTS
)
(error (find-file FILE)
(error "*INIT ERROR*: %s" (error-message-string err))))
(condition-case err
(progn (setq debug-on-error t)
(load-file ORIG-INIT))
(error (find-file ORIG-INIT)
(error "*INIT ERROR*: %s" (error-message-string err))))
或者更好一点:现在将init文件中的内容放在另一个名为ORIG-init的文件中(这里也是一个绝对文件名),并将其用作init文件的(唯一)内容:
(condition-case err
(progn
(setq debug-on-error t)
CONTENTS
)
(error (find-file FILE)
(error "*INIT ERROR*: %s" (error-message-string err))))
(condition-case err
(progn (setq debug-on-error t)
(load-file ORIG-INIT))
(error (find-file ORIG-INIT)
(error "*INIT ERROR*: %s" (error-message-string err))))
实际上,我通常会打开一个带有.emacs文件的emacs。然后,每次进行更改时,我都会打开和关闭一个新的emacs。我知道没那么酷,但即使你的光标也会在你工作的地方
我要做的另一件事是在废弃缓冲区(scratch或新创建的临时文件)中编辑一段代码,然后使用C-x C-e(站在表达式的末尾)执行它。我建议首先将它放在
.emacs
文件的开头:(setq debug on error t)
解决问题后,您可以再次对其进行注释,直到需要时为止。error
会停止Emacs,因此您需要重新定义error signal函数,以便在退出正在运行的任何函数之前执行其他操作。lawlist-您能将您的帖子变成一个答案,以便我可以接受吗?谢谢,实际上,我刚刚在下面看到了Drew的答案。他的答案包括你建议的方法的实现,如果未来的访问者被引导到那个帖子,那么这个方法可能很好。