Leiningen + Figwheel + Emacs 配置

优质
小牛编辑
132浏览
2023-12-01

Leiningen + Figwheel + Emacs 配置

Lein 通过命令行启动, 通过 project.clj 文件配置.
project.clj 实际上是一个 Clojure 脚本, 运行时被读取.

Emacs C-x C-e eval last cljs sexp 的配置

  • 1.在 project.clj 文件里面的 :dependencies 引入
  1. :dependencies [ ...
  2. [com.cemerick/piggieback "0.2.2-SNAPSHOT"]
  3. ... ]
  • 2.修改 project.clj 文件里面的 :figwheel
  1. :figwheel {...
  2. :nrepl-port 7003
  3. :nrepl-middleware ["cemerick.piggieback/wrap-cljs-repl"]
  4. ...
  5. }
  • 3.lein figwheel 启动nrepl, 用Emacs的Cider连接nrepl的7003端口,并在浏览器端打开项目的页面

在你的Emacs配置里面加入 cljs-client-start, cljs-eval-sexp函数, cider连接完成后,在cider连接的buffer里面执行 M-x cljs-client-start 并回车两次, 使得cider的cljs客户端连接上浏览器, 完成后你就可以执行 C-x C-e 执行cljs单个S表达式了

cljs-eval-sexp函数是方便快速查看cljs变量和简单的表达式测试用的, 快捷键是 M-"

  1. (defun cljs-client-start ()
  2. (interactive)
  3. (progn
  4. (insert "(use 'figwheel-sidecar.repl-api)\n")
  5. (insert "(cljs-repl)\n")
  6. (sleep-for 2)
  7. (rename-buffer (replace-regexp-in-string " " " CLJS " (buffer-name)))
  8. )
  9. )
  10. (defun cljs-eval-sexp (sexp)
  11. (interactive "sClJS-EVAL:")
  12. (cider-interactive-eval sexp)
  13. )
  14. (define-key global-map (kbd "M-\"") 'cljs-eval-sexp)