有没有更简单的方法在emacs/cider中同时使用clj和cljs REPL?

3
作为一名初学Clojure的人,我可能需要一些帮助来理解是否有解决使用Cider REPL时遇到的痛点的方法。
背景: 我有一个全栈应用程序(后端使用Limunius + 前端使用re-agent/figwheel)。 我从Emacs/Cider REPL启动服务器,并可以从该REPL访问正在运行的服务器的所有命名空间(非常方便)。
在另一个选项卡中,我运行:
lein figwheel
Figwheel: Cutting some fruit, just a sec ...
Figwheel: Validating the configuration found in project.clj
Figwheel: Configuration Valid ;)
Figwheel: Starting server at http://0.0.0.0:3449
Figwheel: Watching build - app
Compiling build :app to "target/cljsbuild/public/js/app.js" from ["src/cljs" "src/cljc" "env/dev/cljs"]...
Successfully compiled build :app to "target/cljsbuild/public/js/app.js" in 4.113 seconds.
Figwheel: Starting CSS Watcher for paths  ["resources/public/css"]
Figwheel: Starting nREPL server on port: 7002
Launching ClojureScript REPL for build: app

所有cljs命名空间都可以从这个figwheel REPL/tab访问,但它未连接到Cider/emacs,所以我只能复制和粘贴。

有没有一种简单的方法在emacs中拥有两个REPL,并快速在它们之间切换?

或者你的典型工作流程是什么?你使用后端和前端REPLs,但不会同时使用吗?抱歉,我正在学习,所以我需要两个:)


1
我不使用emacs,但在Calva(VS代码扩展)中,我只需分别运行两个不同的cider实例来处理clojurescript和clojure。我还为clojure / clojurescript运行了两个不同的vs-code工作区。效果非常好。 - Sergey Shvets
2个回答

3
当然可以!首先使用已打开端口7002的cider-connect-clj连接到repl,然后在弹出的repl minibuffer中运行(figwheel-sidecar.repl-api/cljs-repl)。然后你将拥有完全功能的cljs repl以及clj repl,你可以使用cider-switch-to-repl-buffer在它们之间切换(当你在clj文件中时会进入clj repl,在cljs文件中时会进入cljs repl)。

正是我所需要的。谢谢! - BinaryButterfly

2
您绝对可以使用CIDER同时连接CLJ和CLJS。请查看CIDER文档中的Managing Connections部分。简而言之,您可以使用C-c C-x c m调用cider-connect-clj&cljs
话虽如此,对于CLJS,我比较懒惰,通常会让figwheel在保存时重新编译,并检查前端是否符合我的要求。
我的设置通常是两个垂直框架,左侧为代码,右侧为REPL,大多数情况下使用C-c C-e内联评估表达式,如果需要跨多行编写,我会将其写在命名空间末尾的(comment ,,,)块中。我不经常使用C-C C-z在代码和REPL之间切换。
另外:我在Ubuntu 18.04上使用默认的Emacs 25和最小化的设置,但我遇到过使用Spacemacs进行更复杂工作流程的人。

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