簡體   English   中英

如何通過firearm.vim使cljs文件與figwheel repl一起使用?

[英]How to make cljs files works with figwheel repl via fireplace.vim?

我有一個關於 ClojureScript 的項目,我使用 vim 進行代碼編輯,所以我想訪問編輯器內的 repl,使用壁爐.vim 可以訪問什么。 如果您有一個全新的平面項目,它會很好地工作 - 您只需打開目錄,啟動 clojure repl,在同一目錄中打開 vim,創建一個表達式並使用 cpp 對其進行評估。

https://youtu.be/vHDLDNoAdLE

但是當我使用 figwheel 項目時,我想連接到 figwheel repl 以便從 cljs 文件中計算一些東西,所以我啟動了一個 figwheel 最終在端口 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 文件)?

您是否“捎帶”(“在 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

您必須在project.cljprofiles.clj包含cemerick.piggieback 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]}}}

問題出在壁爐里。vim 插件

在firearm.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]

以下是我使用 vim 壁爐制作 figwheel 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")) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM