Skip to content

Commit 8c6bbf8

Browse files
anmonteirodnolen
authored andcommitted
CLJS-1729: Support use special function in REPLs
1 parent 72952bf commit 8c6bbf8

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/main/clojure/cljs/repl.cljc

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -705,6 +705,35 @@
705705
(:require-macros ~@(-> specs canonicalize-specs decorate-specs)))
706706
{:merge true :line 1 :column 1})
707707
identity opts)))
708+
'use
709+
(fn self
710+
([repl-env env form]
711+
(self repl-env env form nil))
712+
([repl-env env [_ & specs :as form] opts]
713+
(let [is-self-require? (self-require? specs)
714+
[target-ns restore-ns]
715+
(if-not is-self-require?
716+
[ana/*cljs-ns* nil]
717+
['cljs.user ana/*cljs-ns*])]
718+
(evaluate-form repl-env env "<cljs repl>"
719+
(with-meta
720+
`(~'ns ~target-ns
721+
(:use ~@(-> specs canonicalize-specs decorate-specs)))
722+
{:merge true :line 1 :column 1})
723+
identity opts)
724+
(when is-self-require?
725+
(set! ana/*cljs-ns* restore-ns)))))
726+
'use-macros
727+
(fn self
728+
([repl-env env form]
729+
(self repl-env env form nil))
730+
([repl-env env [_ & specs :as form] opts]
731+
(evaluate-form repl-env env "<cljs repl>"
732+
(with-meta
733+
`(~'ns ~ana/*cljs-ns*
734+
(:use-macros ~@(-> specs canonicalize-specs decorate-specs)))
735+
{:merge true :line 1 :column 1})
736+
identity opts)))
708737
'import
709738
(fn self
710739
([repl-env env form]

0 commit comments

Comments
 (0)