eclipse - 在 Mac 上设置良好的 Clojure

标签 eclipse macos clojure workflow leiningen

我对 clojure 编程做了很多研究。我希望有一个干净的设置,我可以轻松地查看和访问我的所有项目,在 REPL 中快速测试/修改它们,并在完成后将它们打包,以便我可以从命令行调用它们。

通过多方推荐,我目前对 Eclipse、Leiningen、maven 和 SublimeREPL 中的 CCW 感到困惑。经验丰富的 Clojurians,尤其是 mac 用户,您使用哪些工具?

我特别感谢您对项目工作的分步说明,例如如何设置窗口以及如何将文件快速加载到 REPL 中。

与此相关的是,每当我在 Eclipse 中使用 REPL 时遇到错误时,我每次都必须关闭它并重新启动它。如果我尝试继续,我得到的只是“未处理的 REPL 异常”。

最佳答案

对于 Mac 上的 Clojure 开发,我使用 Sam Aaron 出色的“策划的 emacs 体验”Emacs-live。它是一组对 emacs 的定制,主要是为了将 emacs 变成一个现场音乐表演工具(与 Overtone,一个用于制作音乐的 Clojure 库)。然而,这样做的副作用是它看起来很漂亮,并且带有整洁的 Clojure 配置。我在 Mac 上使用它来完成所有 Clojure 开发工作。

启动并运行 Clojure emacs-live:

  1. 安装最新的 emacs。您可以通过 http://emacsformacosx.com/ 获取 Mac 二进制文件
  2. 安装 emacs-live。最简单的方法是运行“brogrammer”安装脚本

    bash <(curl -fksSL https://raw.github.com/overtone/emacs-live/master/installer/install-emacs-live.sh)
    

    您还可以按照 github 存储库 https://github.com/overtone/emacs-live 中的说明进行手动安装

  3. 安装 leiningen。 听起来您已经安装了。如果没有,只需执行 brew install leiningen (你有自制软件吗?如果没有,你可以按照 leiningen 存储库 https://github.com/technomancy/leiningen 中的说明进行操作)。

现在回答你真正的问题......

  1. 如何轻松查看和访问我的所有项目? Emacs 内置了书签 - 我只是为每个项目的根目录添加了书签,这样我就可以快速跳转到它。 要为文件或文件夹添加书签,请使用键盘命令 C-x r m,要查看书签列表,请使用 C-x r l。您可以使用基于文本的目录浏览器(称为 dired)浏览 emacs 中的目录,可以通过键盘命令 C-x d 访问该浏览器。

  2. 如何在 REPL 中快速测试/修改我的项目? Emacs-live 包含 nrepl.el。这意味着您可以从任何 clojure 源文件调用命令 M-x nrepl-jack-in。这将为您提供一个可用于测试程序的 repl。在 emacs 中加载的任何 .clj 文件都会使您进入 clojure 模式。 clojure 模式下的一些有用命令是:

    • C-c M-n(从源文件)将 repl 的命名空间切换到当前源文件的命名空间
    • C-c C-k 评估当前缓冲区(文件)
    • C-x C-e 计算最后一个 s 表达式
    • M-.跳转到定义
    • M-,跳回
  3. 如何设置我的窗口? 我通常有一个水平分割(C-x 2),在下部窗口中有一个 repl,而我当前正在使用的源文件在顶部窗口中。我将使用 C-x b (切换缓冲区)在顶部窗口中的开源文件之间切换。对我有用。

  4. 完成后如何打包? 从命令行 (M-x eshell) 使用 lein uberjar 打包项目及其依赖项。

注意: 我在上面的 emacs 中使用了标准简写来表达键盘快捷键。这有点过时,但在 Mac 上,作为标准,C 映射到控制键,M 映射到 alt 键。

关于eclipse - 在 Mac 上设置良好的 Clojure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154380/

相关文章:

java - 如何在 Mac OS X Snow Leopard 上安装 JDK 8?

java - TensorFlow找不到原生库

objective-c - 10.6.3 os x 更新破坏了 Nestopia 的模拟按键

c - Eclipse 中包含路径问题 : probably Indexer

linux - rhash -M 参数在 macOS 上的 zsh 中不起作用

javascript - ClojureScript Leiningen 编译成单个 .js 文件?

clojure - 在Clojure中用 "windowing"谓词对seq进行分区

clojure - rxjava 和 clojure 异步之谜 : futures promises and agents, 哦天哪

android - 连接电话时 Eclipse ADT 包挂起

java - #if 在 Java 中,就像在 C 预处理器中一样