Mac OSX,Emacs 24.2和nrepl.el无法工作

10

我正在使用nrepl.elEmacs 24.2。我的操作系统版本是OS X Lion 10.7.5。

在通过lein(:~ $ lein repl)启动REPL会话后,运行命令[M-x] nrepl,我可以连接到它,但是如果我尝试使用[M-x] nrepl-jack-in,我会收到以下消息:

error in process sentinel: Could not start nREPL server: /bin/bash: lein: command not found

我按照主站点的说明安装了leiningen,并使用命令brew install leiningen --devel使用homebrew重新安装了它,但两种方法都给我同样的错误。

将路径/usr/local/bin添加到emacs的exec-path列表或尝试配置nrepl.el变量nrepl-lein-command指向我的lein安装的完整路径都不起作用。

我的emacs配置可以在这里找到:https://github.com/khaoz/emacs-files

我做错了什么?

谢谢:)


你是否在 Mac 上,并且不是从命令行启动 Emacs? - Arthur Ulfeldt
不,我从 Spotlight 开始。 - Giuliani Sanches
提前警告一下,如果你打算使用ac-nrepl - 目前看起来有时候在使用nrepl-jack-in启动服务器时会出现一些奇怪的问题。也许现在已经修复了,但如果遇到问题,请记得这个警告。 - Cubic
4个回答

13

虽然 @Arthur 是正确的,但解决您问题的一个更简单的方案是安装 exec-path-from-shell Emacs 扩展。它会自动并相对可靠地将您的 shell PATH(和 MANPATH)复制到 Emacs 中。这意味着无论您从哪里启动 Emacs(包括 spotlight),PATH 都会是正确的。


12

如果您使用的是 Mac,请注意:

lein 需要出现在 Emacs 可见的路径上。您可以通过从 bash 启动 Emacs 来实现此操作。

/Applications/Emacs.app/Contents/MacOS/Emacs project.clj

然后:

输入 M-x nrepl-jack-in。

如果这解决了问题,您可以按照这些说明配置emacs以使用正确的路径。


是的,你的答案是正确的。但是有没有一种方法可以从 Spotlight 或者 Dock 启动 Emacs 并让 nrepl-jack-in 正常工作呢? - Giuliani Sanches
1
只是为了添加更多信息,与其编辑系统文件/etc/profile,创建或更改文件~/.profile也可以起作用,但它仅适用于当前用户。 - Giuliani Sanches
我也在Ubuntu上遇到了完全相同的问题。谢谢Arthur。 - John Lawrence Aspden
作为后续,nREPL模式正在被CIDER模式所取代。现在应该使用M-x cider-jack-in,尽管这个答案同样适用于CIDER。 - Arthur Ulfeldt

2
如果您在Linux上看到此错误,则可能需要在从菜单而不是从shell运行emacs时在~/.bash_profile中设置您的PATH,而不是在~/.bashrc中设置。

1
我必须这样做:
;; set the path as terminal path [http://lists.gnu.org/archive/html/help-gnu-emacs/2011-10/msg00237.html]
(setq explicit-bash-args (list "--login" "-i"))

;; fix the PATH variable for GUI [http://clojure-doc.org/articles/tutorials/emacs.html#osx] 

(defun set-exec-path-from-shell-PATH ()
  (let ((path-from-shell
         (shell-command-to-string "$SHELL -i -l -c 'echo $PATH'")))
    (setenv "PATH" path-from-shell)
    (setq exec-path (split-string path-from-shell path-separator))))

(when window-system (set-exec-path-from-shell-PATH))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接