Skip to content

Commit f816b22

Browse files
committed
[#45] Fix hanging CIDER
1 parent 47c6422 commit f816b22

File tree

2 files changed

+30
-24
lines changed

2 files changed

+30
-24
lines changed

src/babashka/nrepl/impl/server.clj

+24-24
Original file line numberDiff line numberDiff line change
@@ -164,12 +164,12 @@
164164

165165
(defn lookup [ctx msg os mapping-type {:keys [debug] :as opts}]
166166
(let [ns-str (:ns msg)
167-
sym-str (or (:sym msg) (:symbol msg))
168-
sci-ns (when ns-str
169-
(the-sci-ns ctx (symbol ns-str)))]
167+
sym-str (or (:sym msg) (:symbol msg))]
170168
(try
171-
(sci/binding [sci/ns (or sci-ns @sci/ns)]
172-
(let [m (sci/eval-string* ctx (format "
169+
(let [sci-ns (when ns-str
170+
(the-sci-ns ctx (symbol ns-str)))]
171+
(sci/binding [sci/ns (or sci-ns @sci/ns)]
172+
(let [m (sci/eval-string* ctx (format "
173173
(let [ns '%s
174174
full-sym '%s]
175175
(when-let [v (ns-resolve ns full-sym)]
@@ -179,25 +179,25 @@
179179
:name (:name m)
180180
:ns (some-> m :ns ns-name)
181181
:val @v))))" ns-str sym-str))
182-
doc (:doc m)
183-
reply (case mapping-type
184-
:eldoc (cond->
185-
{"ns" (:ns m)
186-
"name" (:name m)
187-
"eldoc" (mapv #(mapv str %) (:arglists m))
188-
"type" (cond
189-
(ifn? (:val m)) "function"
190-
:else "variable")
191-
"status" #{"done"}}
192-
doc (assoc "docstring" doc))
193-
:lookup (cond->
194-
{"ns" (:ns m)
195-
"name" (:name m)
196-
"arglists-str" (forms-join (:arglists m))
197-
"status" #{"done"}}
198-
doc (assoc "doc" doc)))]
199-
(utils/send os
200-
(utils/response-for msg reply) opts)))
182+
doc (:doc m)
183+
reply (case mapping-type
184+
:eldoc (cond->
185+
{"ns" (:ns m)
186+
"name" (:name m)
187+
"eldoc" (mapv #(mapv str %) (:arglists m))
188+
"type" (cond
189+
(ifn? (:val m)) "function"
190+
:else "variable")
191+
"status" #{"done"}}
192+
doc (assoc "docstring" doc))
193+
:lookup (cond->
194+
{"ns" (:ns m)
195+
"name" (:name m)
196+
"arglists-str" (forms-join (:arglists m))
197+
"status" #{"done"}}
198+
doc (assoc "doc" doc)))]
199+
(utils/send os
200+
(utils/response-for msg reply) opts))))
201201
(catch Throwable e
202202
(when debug (println e))
203203
(let [status (cond-> #{"done"}

test/babashka/nrepl/server_test.clj

+6
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,12 @@
315315
(let [eldoc (read-eldoc eldoc)]
316316
(is (= '((x)) eldoc))
317317
(is (= "function" type)))))
318+
(testing "issue-45"
319+
(bencode/write-bencode os {"op" "eldoc" "ns" "non-existing-ns"
320+
"sym" "->>"
321+
"session" session "id" (new-id!)})
322+
(let [{:keys [status]} (read-reply in session @id)]
323+
(is (= ["no-eldoc" "done"] status))))
318324
(testing "user-defined macro"
319325
(bencode/write-bencode os {"op" "eval"
320326
"ns" "user"

0 commit comments

Comments
 (0)