关于Clojure:无法在Emacs中启动`lein` REPL

Can't launch `lein` REPL in Emacs

在Emacs中,使用clojure-mode时,我应该能够使用C-c C-z启动REPL。 但是,无论何时尝试,我都会收到错误消息:

1
Searching for program: no such file or directory: lein

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

我想念什么?


啊! PATH环境变量不是emacs搜索路径的全部和全部。还有" exec-path"。显然,它所做的大部分是相同的事情,但并不完全相同。

无论如何,添加:

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

对于我的.emacs.d/init.el(如果您是这样滚动,则为.emacs)为我清除了所有内容。上面链接的文档提出了一些更全面的建议,例如:

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

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


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

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

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

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

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

更新:
最后,它是一个过时的exec-path-from-shell程序包。使用版本1.8。它与鱼(和tcsh)一起很好地工作。