试图让package.el在Mac OS X上运行

时间:2011-11-19 08:36:17

标签: macos emacs package

我的最终目标是让Clojure / Swank / Slime在Mac OS X上运行Emacs。为了尝试到达那里,我将各种模式安装到Emacs中(我正在尝试使用Aquamacs和EMacsforMacOsx)。我在这里和网上其他地方查看了几篇帖子,目前的建议似乎是使用ELPA。

我从here抓住了我认为最新的package.el(对于Emacs 23.x),我可以使用它来安装clojure-mode。由于我想知道事情正常,我还试图删除我安装的软件包。当我这样做时(我使用package-list-packages,D来删除,X来执行)我收到以下错误:

condition-case: Wrong type argument: stringp, #[(directory &optional recursive) ... ... [directory handler recursive delete-by-moving-to-trash directory-files-no-dot-files-regexp directory-file-name expand-file-name find-file-name-handler delete-directory directory-files ...] 7 1863281 (let ((dir (expand-file-name (read-file-name "Delete directory: " default- directory default-directory nil nil)))) (list dir (if (directory-files dir nil directory-files-no-dot-files-regexp) (y-or-n-p (format "Directory `%s' is not empty, really delete? " dir)) nil)))]

其中... s是一串十六进制字符

这种情况发生在我试过的两种版本的Emacs上。

我使用的是正确版本的package.el。

如果是这样,我该怎么做才能解决这个问题?

由于

2 个答案:

答案 0 :(得分:1)

假设您有权package.el(但请参阅sanityinc的评论),请明确加载该源文件(load-file "..../package.el"),然后执行M-x debug-on-entry package-delete。当你调用那个函数时(这似乎是引发错误的地方),这将使你进入调试器。使用d' to step or c'在调试器中继续跟踪评估。保持源代码显示在单独的缓冲区中,以便您可以更轻松地关注。

似乎正在发生的是,在调用(delete-directory dir t t)中,DIR arg不是字符串,这意味着package--dir没有返回目录(字符串)。

此外,您的delete-directory版本的参数似乎是(directory &optional recursive)。至少在Emacs 24中的package.el版本中,`delete-directory实际上是在这里用3个args调用的。但是你没有得到错误的args数量错误,所以也许你的版本不同。

无论如何,使用调试器试图找出问题所在。正如sanityinc建议的那样,你可能会遇到代码版本不匹配的问题。

答案 1 :(得分:1)

感谢您的意见。而不是浪费更多的时间,我已经转移到Emacs 24,它给了我我需要的东西。再次感谢,

凯文