Mac OSX、Emacs 24.2 和 nrepl.el 不工作

Posted

技术标签:

【中文标题】Mac OSX、Emacs 24.2 和 nrepl.el 不工作【英文标题】:Mac OSX, Emacs 24.2 and nrepl.el not working 【发布时间】:2012-10-25 22:25:53 【问题描述】:

我正在使用nrepl.el、Emacs 24.2。我的 S.O 版本是 OS X Lion 10.7.5。

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

进程前哨错误:无法启动 nREPL 服务器:/bin/bash: lein:找不到命令

我使用instructions in the main site 安装了leiningen,并使用homebrew 和命令brew install leiningen --devel 重新安装了它,但两种方法都给我同样的错误。

将路径 /usr/loca/bin 添加到 emacs exec-path 列表或尝试配置 nrepl.el 变量 nrepl-lein-command 以指向我的 lein 安装的完整路径无济于事。

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

我做错了什么?

谢谢:)

【问题讨论】:

你是不是碰巧在 Mac 上盯着 emacs 而不是从命令行? 没有。我从聚光灯开始。 如果您打算使用 ac-nrepl,请提前警告一下 - 至少目前,当您使用 nrepl-jack-in 启动服务器时,它似乎有时会做一些奇怪的事情。也许他们现在已经解决了这个问题,如果您遇到问题,请回想一下。 【参考方案1】:

对于那些使用 Mac 遇到这个问题的人:

lein 需要在 Emacs 看到的路径上。这可以通过从 bash 启动 Emacs 来完成

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

然后: M-x nrepl-jack-in

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

【讨论】:

是的。你的回答是对的。但是有没有办法从 Spotlight 或 Dock 启动 emacs 并让 nrepl-jack-in 工作? 只是为了添加更多信息,而不是编辑系统文件/etc/profile,创建或更改文件~/.profile 也可以,但它只会将更改应用于当前用户。 我在 Ubuntu 上也遇到了这个问题。谢谢亚瑟。 作为后续的 nrepl 模式正在被 cider-mode 取代。所以它现在是 M-x cider-jack-in 虽然这个答案应该同样适用于苹果酒【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

我必须这样做:

;; 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))

【讨论】:

以上是关于Mac OSX、Emacs 24.2 和 nrepl.el 不工作的主要内容,如果未能解决你的问题,请参考以下文章

如何从 OSX 的命令行启动 GUI Emacs?

Python3,Emacs(OSX)中的Elpy:未找到完成用户错误:无法完成

在 OSX 上的 GNU Emacs 中,激活 Mavericks 全屏模式的键绑定?

mac lion下的emacs使用

来自 Electron 的 M1 mac 上的 Emacs 崩溃

Mac OS X Leopard 上的 Emacs 键绑定