Skip to content

Commit

Permalink
fix: Fix handler to use elin.function.nrepl.op
Browse files Browse the repository at this point in the history
  • Loading branch information
liquidz committed Jan 24, 2024
1 parent a013293 commit 639bbbe
Showing 1 changed file with 22 additions and 15 deletions.
37 changes: 22 additions & 15 deletions src/elin/handler/core.clj
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
[clojure.core.async :as async]
[elin.constant.kind :as e.c.kind]
[elin.function.host :as e.f.host]
[elin.function.nrepl.op :as e.f.n.op]
[elin.function.sexp :as e.f.sexp]
[elin.log :as e.log]
[elin.nrepl.message :as e.n.message]
[elin.protocol.interceptor :as e.p.interceptor]
[elin.protocol.nrepl :as e.p.nrepl]))

Expand Down Expand Up @@ -38,15 +38,17 @@
(e.log/warning writer "Host or port is not specified." (pr-str (select-keys result [:host :port]))))))

(defn- evaluation*
[{:as elin :component/keys [nrepl interceptor]}
[{:as elin :component/keys [nrepl interceptor] :keys [writer]}
code & [options]]
(let [intercept #(apply e.p.interceptor/execute interceptor e.c.kind/evaluate %&)]
(-> {:elin elin :code code :options (or options {})}
(let [options (merge (or options {})
{:ns (e.f.sexp/get-namespace writer)
:file (e.f.host/get-full-path writer)
:nrepl.middleware.print/stream? 1})
intercept #(apply e.p.interceptor/execute interceptor e.c.kind/evaluate %&)]
(-> {:elin elin :code code :options options}
(intercept
(fn [{:as ctx :keys [code options]}]
(let [resp (async/<!! (e.p.nrepl/eval-op nrepl code options))
resp (e.n.message/merge-messages resp)]
(assoc ctx :response resp))))
(assoc ctx :response (async/<!! (e.f.n.op/eval nrepl code options)))))
(get-in [:response :value]))))

(defmethod handler* :evaluate
Expand All @@ -59,23 +61,28 @@
(defmethod handler* :evaluate-current-top-list
[{:as elin :keys [writer]}]
(let [{:keys [lnum col]} (e.f.host/get-cursor-position writer)
code (e.f.sexp/get-top-list writer lnum col)
option {:line lnum
:column col}]
(evaluation* elin code option)))
code (e.f.sexp/get-top-list writer lnum col)]
(evaluation* elin code {:line lnum :column col})))

(defmethod handler* :evaluate-current-list
[{:as elin :keys [writer]}]
(let [{:keys [lnum col]} (e.f.host/get-cursor-position writer)
code (e.f.sexp/get-list writer lnum col)
res (evaluation* elin code)]
res))
code (e.f.sexp/get-list writer lnum col)]
(evaluation* elin code {:line lnum :column col})))

(defmethod handler* :evaluate-current-expr
[{:as elin :keys [writer]}]
(let [{:keys [lnum col]} (e.f.host/get-cursor-position writer)
code (e.f.sexp/get-expr writer lnum col)]
(evaluation* elin code)))
(evaluation* elin code {:line lnum :column col})))

(defmethod handler* :lookup
[{:component/keys [nrepl] :keys [writer]}]
(let [{:keys [lnum col]} (e.f.host/get-cursor-position writer)
ns (e.f.sexp/get-namespace writer)
sym (e.f.sexp/get-expr writer lnum col)]
(pr-str
(async/<!! (e.f.n.op/lookup nrepl ns sym)))))

(defmethod handler* :test
[_elin] "foo")

0 comments on commit 639bbbe

Please sign in to comment.