Emacs desktop-save-mode启动错误

3
在我的.emacs文件中添加了以下代码后,在启动emacs时出现了一些错误。我是一个Emacs的新手,有没有人可以帮我找出错误来自哪里?
在.emacs中添加的代码:
;; Auto-saving the Desktop
(require 'desktop)
(desktop-save-mode 1)
(defun my-desktop-save ()
  (interactive)
  ;; Don't call desktop-save-in-desktop-dir, as it prints a message.
  (if (eq (desktop-owner) (emacs-pid))
      (desktop-save desktop-dirname)))
(add-hook 'auto-save-hook 'my-desktop-save)

错误: 在此输入图片描述


什么错误?请编辑您的问题,它似乎不完整。 - tripleee
我将你的代码添加到我的init文件中,在启动或关闭时没有收到任何错误。从你指定的错误文件的外观来看,我猜测它与EDE有某种联系,你尝试过在不加载EDE(或CEDet的任何部分)的情况下进行吗? - elemakil
1个回答

1

查看函数定义,发现错误在于第492行中的prj-file为NIL。 (函数中的另一个expand-filename调用不应该有nil,因为它是非nil文件名列表的car)。

现在,prj-file是与正则表达式"\\(Root\\)?ProjStep.ede"匹配的/home/shenyan/Test/memcached-1.4.11中的第一个文件名,可能不存在。 由于memcached可能没有EDE项目文件,因此出了问题的必须是第508行对此/home/shenyan/Test/子目录调用ede-project-p时发生了一些奇怪的事情。

我无法确定具体原因,但您可以轻松调试。首先打开您的* scratch *缓冲区以便轻松输入emacs lisp。要检查我的猜测,请将以下代码插入缓冲区中

(ede-directory-project-p "/home/shenyan/Test/memcached-1.4.11")

将光标放在闭合括号上,按下C-x C-e运行它。如果返回nil,那么我错了。否则,你已经找到了罪魁祸首,并且可能需要通过查找ede-files.el中的ede-directory-project-p位来进一步调试。

可能发生的情况是,你的/home/shenyan/Test/目录有某些东西告诉EDE搜索子目录(或者这是默认值?),然后memcached子目录有一个文件,其名称使EDE认为应该搜索项目文件。如果你弄清楚了发生了什么,你可以考虑向EDE开发人员提交一个错误报告:如果项目文件不存在,他们可能不应该出现错误。


1
请注意,根据 [http://www.randomsample.de/cedetdocs/ede/ede/Detecting-a-Project.html] 的说法,您可以通过在 memcached 目录中添加一个名为 .ede-ignore 的文件来防止 EDE 崩溃,但我认为彻底解决问题会更好。 - Rupert Swarbrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接