Hi emacs users, how to send cider-eval-last-sexp result to portal?
I send all evaluations to portal automatically, https://practical.li/clojure/data-inspector/portal/#editor-nrepl-middleware., for example:
:repl/inspect
{:extra-deps
{nrepl/nrepl {:mvn/version "1.0.0"}
cider/cider-nrepl {:mvn/version "0.30.0"}
djblue/portal {:mvn/version "0.40.0"}
clj-commons/clj-yaml {:mvn/version "0.7.0"}}
:main-opts ["-m" "nrepl.cmdline"
"--middleware"
"[cider.nrepl/cider-middleware,portal.nrepl/wrap-portal]"]}
I have the following in a .dir-locals.el that I stow into my work project
((nil . ((eval . (progn
(make-variable-buffer-local 'cider-jack-in-nrepl-middlewares)
(add-to-list 'cider-jack-in-nrepl-middlewares "portal.nrepl/wrap-portal")
... other middlewares like shadow.cljs and flowstorm
))
)))
and use the following helpers to manage the portal lifecycle during a cider jack-in session
(defun portal.api/open ()
(interactive)
(cider-nrepl-sync-request:eval
"(do (ns dev) (def portal ((requiring-resolve 'portal.api/open) {:theme :portal.colors/material-ui})) (add-tap (requiring-resolve 'portal.api/submit)))"))
(defun portal.api/clear ()
(interactive)
(cider-nrepl-sync-request:eval "(portal.api/clear)"))
(defun portal.api/close ()
(interactive)
(cider-nrepl-sync-request:eval "(portal.api/close)"))