Skip to content

Commit c63701c

Browse files
committed
Fix delayed middleware loading issue
1 parent 22c3356 commit c63701c

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

src/cider/nrepl.clj

+13-6
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,26 @@
4040
(or (resolve sym)
4141
(throw (IllegalArgumentException. (format "Cannot resolve %s" sym)))))
4242

43+
(defn- handler-future
44+
[sym ns fn-name]
45+
(or (get @delayed-handlers sym)
46+
(get (swap! delayed-handlers assoc sym
47+
(delay
48+
(locking require-lock
49+
(require ns)
50+
(resolve-or-fail fn-name))))
51+
sym)))
52+
4353
(defmacro run-deferred-handler
4454
"Make a delay out of `fn-name` and place it in `delayed-handlers` atom at compile time.
4555
Require and invoke the delay at run-time with arguments `handler` and
4656
`msg`. `fn-name` must be a namespaced symbol (unquoted)."
4757
[fn-name handler msg]
4858
(let [ns (symbol (namespace `~fn-name))
4959
sym (symbol (name `~fn-name))]
50-
(swap! delayed-handlers assoc sym
51-
(delay
52-
(locking require-lock
53-
(require `~ns)
54-
(resolve-or-fail `~fn-name))))
55-
`(@(get @delayed-handlers '~sym) ~handler ~msg)))
60+
`(@(handler-future '~sym '~ns '~fn-name)
61+
~handler ~msg)))
62+
5663

5764
(defmacro ^{:arglists '([name handler-fn descriptor]
5865
[name handler-fn trigger-it descriptor])}

0 commit comments

Comments
 (0)