                         (catch Throwable e
                           (caught e repl-env opts)
                           opts))))
+             init (or init
+                      #(evaluate-form repl-env env "<cljs repl>"
+                         (with-meta
+                           `(~'ns ~'cljs.user
+                              (:require ~@repl-requires))
+                           {:line 1 :column 1})
+                         identity opts))
              read-eval-print
              (fn []
                (let [input (binding [*ns* (create-ns ana/*cljs-ns*)

           (fn []
             (binding [*repl-opts* opts]
               (try
                 (init)
                 (when analyze-path
                   (analyze-source analyze-path opts))
                 (evaluate-form repl-env env "<cljs repl>"
                   (with-meta
                     `(~'ns ~'cljs.user
                        (:require ~@repl-requires))
                     {:line 1 :column 1})
                   identity opts)
                 (catch Throwable e
                   (caught e repl-env opts)))
               (when-let [src (:watch opts)]

  [repl-env {:keys [init need-prompt prompt flush read eval print caught reader
                    print-no-newline source-map-inline wrap repl-requires
                    compiler-env]
             :or {need-prompt #(if (readers/indexing-reader? *in*)
                                (== (readers/get-column-number *in*) 1)
                                (identity true))
                  prompt repl-prompt
                  flush flush
                  read repl-read
