-
-
Notifications
You must be signed in to change notification settings - Fork 208
Running figwheel in a Cursive Clojure REPL
This has been tested with the following versions (but may work with other versions as well):
figwheel-sidecar "0.5.0"
cursive clojure 0.1.62
clojure 1.7.0
clojurescript 1.7.122
These are the steps you need to take to get a ClojureScript figwheel REPL going in Intellij: (see full details below)
- Create a figwheel project and tweak your
project.clj
- Create a
script/repl.clj
file - Create a
clojure.main
Cursive REPL Configuration
Create a new ClojureScript project based on the figwheel template by
running lein new figwheel figwheel-test
in your terminal.
This will create a figwheel project called figwheel-test
based
on the figwheel
template.
cd
into your project's newly created dir and in the
project.clj
remove lein-figwheel
from :plugins
. Change
your :dependencies
to include figwheel-sidecar
:
Your :dependencies
and :plugins
should look like the following:
(defproject figwheel-test "0.1.0-SNAPSHOT"
...
:dependencies [[org.clojure/clojure "1.7.0"]
[org.clojure/clojurescript "1.7.122"]
[org.clojure/core.async "0.1.346.0-17112a-alpha"]
[figwheel-sidecar "0.5.0"]]
:plugins [[lein-cljsbuild "1.1.0"]]
...)
Create a script/repl.clj
file, it's contents should look like the
following:
(use 'figwheel-sidecar.repl-api)
(start-figwheel!) ;; <-- fetches configuration
(cljs-repl)
Don't forget to add the script
folder to :source-paths
in project.clj if it's not there already.
note: leiningen profile merging won't occur when fetching config from project.clj
- Click Run->Edit configurations.
- Click the
+
button at the top left and choose Clojure REPL - Choose a Local REPL
- Enter a name in the Name field (e.g. "REPL")
- Choose the radio button Use clojure.main in normal JVM process
- In the Parameters field put
script/repl.clj
- Click the OK button to save your REPL config.
In Intellij make sure your REPL config is selected and click the green "play" button to start your REPL.
You should see the following if everything is working correctly:
Focusing on build ids: dev
Figwheel Controls:
(stop-autobuild) ;; stops Figwheel autobuilder
(start-autobuild [id ...]) ;; starts autobuilder focused on optional ids
(switch-to-build id ...) ;; switches autobuilder to different build
(reset-autobuild) ;; stops, cleans, and starts autobuilder
(build-once [id ...]) ;; builds source one time
(clean-builds [id ..]) ;; deletes compiled cljs target files
(fig-status) ;; displays current state of system
(add-dep [org.om/om "0.8.1"]) ;; add a dependency. very experimental
Switch REPL build focus:
:cljs/quit ;; allows you to switch REPL to another build
Docs: (doc function-name-here)
Exit: Control+C or :cljs/quit
Results: Stored in vars *1, *2, *3, *e holds last exception object
Prompt will show when figwheel connects to your application
Type `:cljs/quit` to stop the ClojureScript REPL
To open files within IntelliJ from the figwheel error message, create a ~/bin/open-in-intellij script similar to the following:
#!/bin/sh
FILENAME=$1
LINENUM=$2
curl -silent -o /dev/null http://127.0.0.1:63330/file?file=$FILENAME\&line=$LINENUM
Next, add the :open-file-command
option to the root level :figwheel
configuration in project.clj
:
(defproject figwheel-test "0.1.0-SNAPSHOT"
...
:figwheel {:open-file-command "open-in-intellij"}
...)