17

在 Emacs 中,当使用. 时clojure-mode,我应该能够使用C-c C-z. 但是,每当我尝试时,我都会收到错误消息:

Searching for program: no such file or directory: lein

我已经lein安装在/usr/local/bin(via brew) 中并且/usr/local/bin在我的PATH(甚至 Emacs 也这么说,via eval-expression (getenv "PATH"))中。

我错过了什么?

4

2 回答 2

38

啊! PATH环境变量不是 emacs 搜索路径的全部和全部。还有“执行路径”。它显然做大部分相同的事情,但不完全一样

无论如何,添加:

(add-to-list 'exec-path "/usr/local/bin")

对我的.emacs.d/init.el(或者.emacs如果你是这样滚动的)为我清理了一切。上面链接的文档提出了一些更全面的建议,例如:

(setenv "PATH" (concat (getenv "PATH") ":/usr/local/bin"))
(setq exec-path (append exec-path '("/usr/local/bin")))

首先,我会尝试 (simple) add-to-list。但是YMMV。

于 2012-12-02T17:35:49.373 回答
1

我遇到了同样的问题,并开始调查出了什么问题。我很快发现我的 exec-path 看起来像这样(简化示例):

("/usr/local/bin /bin /sbin").

这是一个只有一个长字符串的列表,而不是一个单独的路径列表。我的 env PATH 变量看起来完全一样。显然问题来自我的外壳。

我用鱼壳。它的 PATH 变量分隔符只是一个空格。我使用的 exec-path-from-shell 包无法解析它。我通过将其附加到我的 .emacs.d/init.el 来修复它:

(setq exec-path (split-string (car exec-path)))

更新:最后它是一个过时的 exec-path-from-shell 包。使用版本 1.8。它适用于鱼(和 tcsh)。

于 2015-01-03T18:22:57.027 回答