ClojureScript

Atom

如何安装 Atom 包

您可以通过按下Command + ,(command + 逗号)或 Windows 上的Control + ,(control + 逗号)来打开 Atom 设置。从那里,您可以转到“安装”选项卡并搜索您要安装的包的名称。如果您更喜欢使用命令行,您也可以使用apm来使用以下方法安装包:

$ apm install [package-name]

Parinfer

与 Java 和 Javascript 不同,ClojureScript 的约定是将闭合定界符放在同一行而不是新行上。为了帮助管理这一点,Shaun LeBron 的 Parinfer 可以根据您的代码缩进自动平衡您的闭合定界符。Chris Oakman 的 Atom 包适用于 Parinfer,可在此处找到:https://atom.io/packages/parinfer

改进的新行自动缩进

Atom 默认情况下不会为 Lisp 方言正确自动缩进新行。您可以通过安装 Jon Spalding 的 lisp-paredit Atom 包来解决此问题。如果您已经在使用 Parinfer 并且只想使用 lisp-paredit 包进行新行缩进,您可以将 lisp-paredit 的设置更改为

  • 启用:选中

  • 严格:未选中

  • 键绑定启用:未选中

…​并使用以下键绑定更新您的keymap.cson 文件

# Provides proper indentation when enter is pressed
'atom-text-editor[data-grammar~="clojure"]':
  'enter': 'lisp-paredit:newline'

# Override newline back to original when in Proto-REPL console
# GitHub Issue: https://github.com/jonspalding/lisp-paredit/issues/26
'ink-console atom-text-editor[data-grammar~="clojure"]':
  'enter': 'editor:newline'
keymap.cson 文件位于主菜单中的“Atom > 键绑定…​”下。

Joker Linter

Roman Bataev 的 Joker linter 可以让您知道何时在代码中出现错误。Ryan De La Torre 的 Atom 包适用于 Joker,可在此处找到:https://atom.io/packages/linter-joker

要使用此功能,您还需要在您的机器上安装 Joker。您可以从 这里 下载它,或者通过 Homebrew 使用以下命令安装它:

brew install candid82/brew/joker

Proto REPL

Jason Gilman 的 Proto REPL 允许您从编辑器中评估 ClojureScript 代码。

使用 Figwheel 设置 Proto REPL

如果您使用的是 Leiningen 和 Figwheel,将 Proto REPL 连接到您的应用程序的最快方法是从 Proto REPL 中启动 Figwheel。为此,首先将figwheel-sidecarpiggiebackproto-repl 合并到您的project.clj 中的 dev 依赖项中

:profiles {:dev {:dependencies [[figwheel-sidecar "0.5.9"]
                                [com.cemerick/piggieback "0.2.1"]
                                [proto-repl "0.3.1"]]

接下来,在您的project.clj 中添加 piggieback 的 nREPL 中间件以用于 ClojureScript

:repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}

现在打开 Proto REPL。您可以通过按下Command + Shift + P(或 Windows 上的Control + Shift + P)来打开命令面板,然后使用命令面板搜索Proto REPL: Toggle 命令。

在启动 Proto REPL 后,您应该在 REPL 指示的底部看到消息“使用 lein 在 [您的项目的路径] 中启动 REPL”。如果一切顺利,您应该能够在 Proto REPL 中运行以下命令来启动 Figwheel 并启动 ClojureScript REPL

(do (use 'figwheel-sidecar.repl-api) (start-figwheel!) (cljs-repl))

在浏览器中打开您本地托管的网页,然后尝试在 Proto REPL 中输入一些测试代码,例如(js/alert "Hello from Proto REPL!"),以验证一切正常。(上面的命令应该会导致您的浏览器中出现一个警报。)

将命令保存到 Proto REPL

如果您不想每次都输入启动 Figwheel 的命令,您可以将自定义命令保存到您的 Atom 的init.js/init.coffee 文件中

atom.commands.add('atom-text-editor', 'Start Figwheel with CLJS REPL', function () {
  protoRepl.executeCode(`
    (when
      (try
        (require 'figwheel-sidecar.repl-api)
        (resolve 'figwheel-sidecar.repl-api/start-figwheel!)
        (catch Throwable _))
      (eval '(do (figwheel-sidecar.repl-api/start-figwheel!)
                 (figwheel-sidecar.repl-api/cljs-repl))))
  `);
});

有关扩展 Proto REPL 的更多文档,请参见:https://github.com/jasongilman/proto-repl/blob/master/extending_proto_repl.md