如何通过firewall.vim使cljs文件与figwheel repl一起使用?

时间:2019-01-23 16:02:53

标签: vim clojurescript read-eval-print-loop

我在ClojureScript上有一个项目,我正在使用vim进行代码编辑,因此我想在编辑器中访问repl,即可以使用firewall.vim进行访问。 如果您有一个全新的扁平项目,它会很好用-您只需打开目录,启动clojure repl,在同一目录中打开vim,创建一个表达式并使用cpp对其求值。

https://youtu.be/vHDLDNoAdLE

但是当我使用figwheel项目时,我想连接到figwheel repl以便从cljs文件中计算出一些东西,所以我启动了一个figwheel wich,最终在端口7888上启动了repl,并使用:Connect命令使用壁炉连接了该repl。并且仅适用于clj文件,不适用于cljs。

https://youtu.be/ue42Yh0v6UQ

当我尝试在.cljs文件壁炉中求值时抛出此错误:

  

处理功能时检测到错误   37_printop 1 .. 37_opfunc [35] .. fireplace#client:第10行:   E605:未捕获异常:壁炉:类   java.lang.ClassNotFoundException

有人知道如何使其工作(壁炉+ .cjls文件)吗?

3 个答案:

答案 0 :(得分:1)

问题出在firewall.vim插件中

firefom.vim中的323行

let response = connection.eval("((or (resolve 'cider.piggieback/cljs-repl)"

必须是一行:

let response = connection.eval("((or (resolve 'cider.piggieback/wrap-cljs-repl)"

因为cider.piggieback在299行定义了wrap-cljs-repl函数:

(defn wrap-cljs-repl [handler]

答案 1 :(得分:0)

您是否已“ Piggiebacked”(“在nREPL会话的顶部启用ClojureScript REPL的使用”)将Fireplace连接到Figwheel REPL?

:Piggieback (figwheel-sidecar.repl-api/repl-env)

请参见https://github.com/bhauman/lein-figwheel/wiki/Using-the-Figwheel-REPL-with-Vim#still-in-vim-piggieback-on-clojurescript

ClassNotFound Exception cemmerick.piggieback相关:

您必须在cemerick.piggiebackproject.clj中包括profiles.clj。参见https://github.com/nrepl/piggieback

:profiles {:dev {:dependencies [[com.cemerick/piggieback "0.2.1"]
                                [figwheel-sidecar "0.5.18"]]
                 :repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}}}

答案 2 :(得分:0)

以下是我使用vim壁炉制作无花果轮REPL的步骤:

  1. 将这些依赖项添加到/home/{username}/.clojure/deps.edn
...
  :aliases {:nrepl
            {:extra-deps
             {nrepl/nrepl {:mvn/version "0.6.0"}
              cider/cider-nrepl {:mvn/version "0.23.0"}
              cider/piggieback {:mvn/version "0.4.2"}}}}
...
  1. 将这些添加到项目中:
...
 :deps  {com.bhauman/figwheel-main {:mvn/version "0.2.3"}
         figwheel-sidecar          {:mvn/version "0.5.19"}}
...
  1. 使用以下命令从终端运行项目:
clj -R:nrepl -m nrepl.cmdline --middleware "[cider.nrepl/cider-middleware cider.piggieback/wrap-cljs-repl]"

  1. 使用以下命令从vim连接到nREPL:
:Connect nrepl://localhost:{port}
  1. 启动一个Figwheel REPL并连接到它:
:CljEval (do (require 'figwheel.main.api) (figwheel.main.api/start "dev"))
:CljEval (do (use 'figwheel.main.api) (figwheel.main.api/cljs-repl "dev"))