Skip to content

Commit a42b2c7

Browse files
committed
Improve portal.nrepl error handling
1 parent 8df6214 commit a42b2c7

File tree

1 file changed

+34
-32
lines changed

1 file changed

+34
-32
lines changed

src/portal/nrepl.clj

+34-32
Original file line numberDiff line numberDiff line change
@@ -68,45 +68,47 @@
6868
:line (:line m 1)
6969
:column (:column m 1)
7070
:file (:clojure.core/eval-file m)))))
71-
(catch Exception _)))
71+
(catch Exception _ msg)))
7272

7373
(defrecord ^:no-doc PortalTransport [transport handler-msg]
7474
Transport
7575
(recv [_this timeout]
7676
(transport/recv transport timeout))
7777
(send [_this msg]
7878
(transport/send transport msg)
79-
(let [handler-msg (read-cursive-file-meta handler-msg)]
80-
(when (and (seq (p/sessions)) (:file handler-msg))
81-
(when-let [out (:out msg)]
82-
(swap! (:stdio handler-msg) conj {:tag :out :val out}))
83-
(when-let [err (:err msg)]
84-
(swap! (:stdio handler-msg) conj {:tag :err :val err}))
85-
(when-let [result (get-result msg)]
86-
(-> result
87-
(merge
88-
(select-keys handler-msg [:ns :file :column :line :code])
89-
(when (= "load-file" (:op handler-msg))
90-
{:code (:file handler-msg)
91-
:file (:file-path handler-msg)})
92-
(when-let [report (-> handler-msg :report deref not-empty)]
93-
{:report report})
94-
(when-let [stdio (-> handler-msg :stdio deref not-empty)]
95-
{:stdio stdio}))
96-
(update :ns (fnil symbol 'user))
97-
(assoc :time (:time handler-msg)
98-
:ms (quot (- (System/nanoTime) (:start handler-msg)) 1000000)
99-
:runtime (cond
100-
(shadow-cljs? handler-msg) :cljs
101-
(in-portal? handler-msg) :portal
102-
:else :clj))
103-
(with-meta {::eval true
104-
:portal.viewer/for
105-
{:code :portal.viewer/code
106-
:time :portal.viewer/relative-time
107-
:ms :portal.viewer/duration-ms}
108-
:portal.viewer/code {:language :clojure}})
109-
tap>))))
79+
(try
80+
(let [handler-msg (read-cursive-file-meta handler-msg)]
81+
(when (and (seq (p/sessions)) (:file handler-msg))
82+
(when-let [out (:out msg)]
83+
(swap! (:stdio handler-msg) conj {:tag :out :val out}))
84+
(when-let [err (:err msg)]
85+
(swap! (:stdio handler-msg) conj {:tag :err :val err}))
86+
(when-let [result (get-result msg)]
87+
(-> result
88+
(merge
89+
(select-keys handler-msg [:ns :file :column :line :code])
90+
(when (= "load-file" (:op handler-msg))
91+
{:code (:file handler-msg)
92+
:file (:file-path handler-msg)})
93+
(when-let [report (-> handler-msg :report deref not-empty)]
94+
{:report report})
95+
(when-let [stdio (-> handler-msg :stdio deref not-empty)]
96+
{:stdio stdio}))
97+
(update :ns (fnil symbol 'user))
98+
(assoc :time (:time handler-msg)
99+
:ms (quot (- (System/nanoTime) (:start handler-msg)) 1000000)
100+
:runtime (cond
101+
(shadow-cljs? handler-msg) :cljs
102+
(in-portal? handler-msg) :portal
103+
:else :clj))
104+
(with-meta {::eval true
105+
:portal.viewer/for
106+
{:code :portal.viewer/code
107+
:time :portal.viewer/relative-time
108+
:ms :portal.viewer/duration-ms}
109+
:portal.viewer/code {:language :clojure}})
110+
tap>))))
111+
(catch Exception _))
110112
transport))
111113

112114
(defn- wrap-portal* [handler msg]

0 commit comments

Comments
 (0)