用`cider-jack-in`在Emacs中执行Clojure

时间:2015-08-21 23:14:45

标签: emacs clojure leiningen read-eval-print-loop cider

我正在尝试运行安装了苹果酒软件包的Clojure emacs。 我在Mac OS X 10.10.4上使用Emacs 24.5.1。

我下载了lein脚本并将脚本复制到〜/ Dropbox / bin中。 我检查了lein repl Clojure工作正常。

cider包随M-x package-install一起安装。我编辑了~/.emacs.d/init.el以指定lein脚本:(add-to-list 'exec-path "~/Dropbox/bin"),其中包含来自Can't launch `lein` REPL in Emacs的提示。

但是,当我启动emacs并运行M-x cider-jack-in时,我收到以下错误消息:

enter image description here

当我开始lein repl并执行M-x cider-connecthttp://xahlee.info/clojure/clojure_emacs_cider.html)时,我可以在Emacs中运行cider-repl。

enter image description here

可能出现什么问题?

2 个答案:

答案 0 :(得分:16)

最快的解决方案是将lein象征性地链接到Emacs可以找到它的路径。这行代码解决了这个问题。

sudo ln -s ~/Dropbox/bin/lein /usr/local/bin/lein

我总结了在emacs上安装用于运行Clojure的cider包的步骤,没有任何错误或警告。

苹果酒 - https://github.com/clojure-emacs/cider

安装

  • 下载lein https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein
    • 我将文件〜/ Dropbox / bin复制成可执行文件。
  • 看起来/ usr / local / bin不是Emacs自动找到二进制文件的路径,所以我不得不进行设置。

    • 运行sudo ln -s ~/Dropbox/bin/lein /usr/local/bin/lein
    • 更新~/.emacs.d/init.el以指定lein脚本的位置:
      • (add-to-list 'exec-path "/usr/local/bin")
  • 更新~/.lein/profiles.clj

错误和解决方案

  • 如果出现错误The lein executable (specified by cider-lein-command'或cider-boot-command') isn't on your exec-path

    • 制作符号链接,并按照说明更新init.el
  • 如果出现错误“符号的函数定义无效:clojure-project-dir”,则是因为包版本不匹配。

现在,所有的警告都消失了。

enter image description here

参考

对于Mac OS X,brew install leiningen可以安装lein,但这会导致问题,如How to upgrade nrepl version of leiningen?。这是lein brew的消息。

nREPL server started on port 61216 on host 127.0.0.1 - nrepl://127.0.0.1:61216
REPL-y 0.3.5, nREPL 0.2.6
Clojure 1.6.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_45-b14

我不得不使用lein网站的lein来获取正确版本的工具。

Retrieving org/clojure/clojure/1.2.0/clojure-1.2.0.pom from central
nREPL server started on port 61279 on host 127.0.0.1 - nrepl://127.0.0.1:61279
REPL-y 0.3.7, nREPL 0.2.7
Clojure 1.7.0

答案 1 :(得分:1)

另一个简单的解决方案就是使用自制软件。虽然自制软件仅仅用于安装lein,但如果你已经使用它,那么你需要做的只是运行

var text = 'Hello\n.\nworld\n.\n.\n.\n.\nits me';

var lines = text.split('\n');
lines.forEach(function (line, i) {
    if (line) {
        var div = document.createElement('div');    
        div.id = 'line' + (i + 1);
        div.innerHTML = line;
        document.body.appendChild(div);
    }

    console.log('%d: %s', i, line);
});

你做完了。我使用自制软件来安装emacs和其他一些有用的应用程序,所以我已经在我的系统上安装了它。