在CIDER中设置Figwheel REPL时遇到问题

4

我刚开始尝试使用以下模板制作简单的cljs应用:

lein new figwheel someproject -- --reagent

我希望像普通的clj项目一样,可以在cider中使用REPL进行cljs开发。因此,我进行了一些研究,最终找到了这里:

https://github.com/bhauman/lein-figwheel/wiki/Using-the-Figwheel-REPL-within-NRepl

我仔细阅读了说明,并验证了所有必要的依赖项都在project.clj中(似乎不需要更改任何内容,因为该模板已经添加了所有需要的内容)。以上链接的最后一步指示我需要将以下代码添加到我的emacs配置文件中:

(require 'cider)
(setq cider-cljs-lein-repl
      "(do (require 'figwheel-sidecar.repl-api)
           (figwheel-sidecar.repl-api/start-figwheel!)
           (figwheel-sidecar.repl-api/cljs-repl))")

现在-我是一个emacs新手,所以我使用的设置仍然是我从“Clojure for the Brave and True”学到的那个:https://github.com/flyingmachine/emacs-for-clojure。我尝试首先将上面的片段放入~/.emacs.d/init.el中,但每当我尝试M-x cider-jack-in ...时,没有cider-jack-in-clojurescript选项。 我还尝试将代码片段放入~/.emacs.d/customizations/setup-clojure.el,这似乎更合逻辑一些,但结果相同。我真的很想能够运行这个REPL,所以任何帮助都将不胜感激。

1
作为一个Emacs新手,我强烈建议使用已经为您设置好了一切的Emacs发行版。Emacs PreludeEmacs Live是主要竞争者 - 两者都在积极维护,而不像您链接的那个似乎已经三四年没有更新了。 - Charles Duffy
1
感谢@CharlesDuffy - 在学习Clojure的过程中,我一直试图将深入了解emacs的细节的负担最小化 - 同时太多了。我坚持使用这个设置只是因为我已经习惯了它的所有包/默认值等,对于从头开始并确保我再次正确设置所有内容持谨慎态度。不过我理解你的观点,最终会转移到更强大的工具上。 - Solaxun
@Solaxun Spacemacs搭配Clojure layer也是一个不错的选择。我最初也是从Brave and True开始的,但是Spacemacs提供了更好的默认设置和内置功能(例如,错误消息总是在同一缓冲区中弹出而不是随机的; clj-refactor)。Brave and True的按键绑定在这里也适用,并且您可以通过按下,(主模式)来发现其他选项并查看选项弹出。1.安装emacs。2.下载Spacemacs。3.将clojure添加到~/.spacemacs层中。 - user2609980
1
我一直听到Spacemacs很不错的评价。我没有转向其他东西(比如Prelude、Spacemacs等)的唯一原因是我不想再花时间设置所有东西。但实际上,除了默认设置之外,我可能只添加了一些东西,所以应该不会太糟糕,也许我会尝试一下Spacemacs。顺便说一句,我以前读过你的博客(Clojure中的PAIP),真的很喜欢! - Solaxun
@Solaxun 哈哈,太棒了,很高兴听到这个消息。也许有一天我能完成第五章 :)。你知道PAIP吗? - user2609980
1个回答

6

我通常使用纯文本的 cider-jack-in,然后从 REPL 调用所有内容:

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

如果你想要两个REPL,可以在通过cider-connect打开的独立REPL中执行最后一步`(cljs-repl)`。
如果你刚接触Emacs,我认为Spacemacs是你最好的选择:http://spacemacs.org/。 如果你感兴趣,我写了一篇博客文章和一个视频介绍我的开发工作流程。

您可以将上述内容添加到.spacemacs文件的custom-set-variables下,如下所示: (custom-set-variables <...> '(cider-cljs-lein-repl "(do (require 'figwheel-sidecar.repl-api) (figwheel-sidecar.repl-api/start-figwheel!) (figwheel-sidecar.repl-api/cljs-repl))") <...>)然后这些步骤会自动执行。 - user2609980
1
Spacemacs现在支持Figwheel,只需连接到一个CLJS REPL,您将获得使用Figwheel的选项。 - user3139545

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接