Emacs桌面保存模式启动错误

时间:2012-05-29 08:57:19

标签: emacs desktop

在我的.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)

错误: enter image description here

1 个答案:

答案 0 :(得分:1)

查看the function definition有什么破坏,似乎错误是第492行的prj文件是NIL。(函数中的另一个expand-filename调用不应该永远有一个零,因为它是一个非零文件名列表的车。)

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

我无法弄清楚为什么会发生这种情况,但你可以很容易地调试。首先调出*scratch*缓冲区,轻松输入emacs lisp。要检查我的猜测,请将以下代码插入缓冲区

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

并通过在结束括号上点击C-x C-e来运行它。如果它返回nil我错了。否则,你找到了罪魁祸首,应该通过搜索ede-files.elede-directory-project-p的位来进一步调试它。

可能发生的事情是你的/home/shenyan/Test/目录有什么东西告诉EDE搜索子目录(或者这可能是默认的?)然后memcached子目录有一个文件,其名称使得EDE认为应该搜索它一个项目文件。如果你确切地知道发生了什么,你可以考虑向EDE开发人员提交一个错误:如果项目文件不存在,他们可能不会错误。