无法在Emacs中启动`lein` REPL

时间:2012-12-02 17:35:49

标签: emacs clojure leiningen

在Emacs中,当使用clojure-mode时,我应该能够使用C-c C-z启动REPL。不过,每当我尝试时,我都会收到错误:

Searching for program: no such file or directory: lein

lein已安装了/usr/local/bin(通过brew),/usr/local/bin位于PATH(即使是Emacs也是如此,通过eval-expression (getenv "PATH") })。

我错过了什么?

2 个答案:

答案 0 :(得分:31)

啊! PATH环境变量不是emacs搜索路径的最终全部和全部。还有“exec-path”。它显然是mostly the same thing but not exactly

无论如何,添加:

(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")))

我首先尝试(更简单)add-to-list。但是YMMV。

答案 1 :(得分: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)。