read eval print loop - How do I setup a Clojurescript REPL with emacs? -


i'm trying setup environment clojurescript. problem i'm having not knowing how set can connect clojurescript browser repl emacs, can evaluate forms right editor , have show in browser.

things i've tried:

i tried using cemerick's piggieback , piggybacking on nrepl. don't know how configure documentation. able work after figuring out had make index.html file in root of project folder. except server doesn't serve assets.

i tried setting inferior-lisp bash script clojurescript wiki. however, whenever try run inferior-lisp-program i'm getting "wrong type argument: stringp, nil".

here's ideal workflow:

i have project folder/resources/public folder has assets , html files. can start web server serves files somehow, either ring or using python's simple http server. i'd able connect repl emacs , evaluate forms it.

cemerick rescue again: austin (https://github.com/cemerick/austin) you're after.

austin gives 2 options: either repl js evaluated in browser (a "project repl"), or more complete, integrated browser-connected repl. sounds latter you're after, , need dig little harder docs: https://github.com/cemerick/austin/tree/master/browser-connected-repl-sample

to browser-connected repl working, chas's example straightforward follow, , boils down to:

  1. add little middleware or template magic append js script element html page, , script needs contain output of (cemerick.austin.repls/browser-connected-repl-js)
  2. start nrepl, start ring server, ,
    (def repl-env (reset! cemerick.austin.repls/browser-repl-env (cemerick.austin/repl-env)))
    create repl environment.
  3. turn nrepl session clojure clojurescript repl with
    (cemerick.austin.repls/cljs-repl repl-env)
  4. connect still-running ring server app browser, , should connected.
    (.alert js/window "hi!") should prove it.
  5. using standard emacs nrepl commands work expected, compiling clojurescript javascript , sending browser evaluation.

the main difference between piggieback , austin first , second steps: atom used middleware add inline javascript block connects nrepl. since http url determined @ runtime, ring server , client-side javascript need work in concert.

fwiw created function in user namespace speed connecting cljs repl:

(defn cljs-browser-repl   "fire browser-connected clojurescript repl"   []   (let [repl-env (reset! cemerick.austin.repls/browser-repl-env                          (cemerick.austin/repl-env))]     (cemerick.austin.repls/cljs-repl repl-env))) 

Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -