我的最终目标是在Mac上通过Emacs运行Clojure/Swank/slim.为此,我在Emacs中安装了各种模式(我正在尝试Aquamacs和EMacsforMacOsx)。我已经看过这里和其他网站上的一些帖子,目前的建议似乎是使用ELPA。
我从here获取了我认为是最新的package.el (针对Emacs23.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版本是否正确。
如果是这样,我可以做些什么来解决这个问题?
谢谢
发布于 2011-11-20 22:10:18
假设您有正确的package.el (但请参阅sanityinc的注释),显式地加载源文件(load-file "..../package.el"),然后执行M-x debug-on-entry package-delete。当您调用该函数时,这将把您放到调试器中(这似乎是引发错误的地方)。在调试器中使用d' to step orc‘继续执行评估。将源代码显示在单独的缓冲区中,这样您就可以更容易地进行跟踪。
似乎正在发生的情况是,在调用(delete-directory dir t t)时,DIR参数不是字符串,这意味着package--dir没有返回目录(字符串)。
而且,您的delete-directory版本的参数看起来是(directory &optional recursive)。至少在Emacs24中的目录版本中,‘`delete package.el’实际上是用3个参数调用的。但是您没有收到错误的参数个数错误,所以您的版本可能是不同的。
无论如何,使用调试器尝试找出哪里出了问题。看起来,就像sanityinc建议的那样,你的代码版本不匹配。
发布于 2011-11-21 22:10:44
感谢您的投入。我没有在这上面浪费更多的时间,而是转到了Emacs 24,它给了我所需要的东西。再次感谢,
凯文
https://stackoverflow.com/questions/8192865
复制相似问题