|
4 | 4 | [clojure.tools.nrepl.middleware :refer [set-descriptor!]]
|
5 | 5 | [clojure.tools.nrepl.misc :refer [response-for]]
|
6 | 6 | [clojure.tools.nrepl.transport :as transport]
|
7 |
| - [refactor-nrepl.analyzer :refer [warm-ast-cache]] |
8 |
| - [refactor-nrepl.artifacts |
9 |
| - :refer |
10 |
| - [artifact-list artifact-versions hotload-dependency]] |
11 | 7 | [refactor-nrepl.config :as config]
|
12 | 8 | [refactor-nrepl.core :as core]
|
13 |
| - [refactor-nrepl.extract-definition :refer [extract-definition]] |
14 |
| - [refactor-nrepl.find.find-locals :refer [find-used-locals]] |
15 |
| - [refactor-nrepl.find.find-symbol :refer [find-symbol]] |
16 |
| - [refactor-nrepl.find.find-used-publics :refer [find-used-publics]] |
17 |
| - [refactor-nrepl.find.find-macros :refer [warm-macro-occurrences-cache]] |
18 |
| - [refactor-nrepl.ns.clean-ns :refer [clean-ns]] |
19 | 9 | [refactor-nrepl.ns.libspecs :refer [namespace-aliases]]
|
20 |
| - [refactor-nrepl.ns.pprint :refer [pprint-ns]] |
21 |
| - [refactor-nrepl.ns.resolve-missing :refer [resolve-missing]] |
22 |
| - [refactor-nrepl.rename-file-or-dir :refer [rename-file-or-dir]] |
23 | 10 | [refactor-nrepl.stubs-for-interface :refer [stubs-for-interface]]
|
24 | 11 | [clojure.walk :as walk]))
|
25 | 12 |
|
| 13 | +(defn- require-and-resolve [sym] |
| 14 | + (require (symbol (namespace sym))) |
| 15 | + (resolve sym)) |
| 16 | + |
26 | 17 | (defmacro ^:private with-errors-being-passed-on [transport msg & body]
|
27 | 18 | `(try
|
28 | 19 | ~@body
|
|
74 | 65 | (pr-str response) ; edn as default
|
75 | 66 | )))
|
76 | 67 |
|
| 68 | +(def ^:private resolve-missing |
| 69 | + (delay |
| 70 | + (require-and-resolve 'refactor-nrepl.ns.resolve-missing/resolve-missing))) |
| 71 | + |
77 | 72 | (defn resolve-missing-reply [{:keys [transport] :as msg}]
|
78 |
| - (reply transport msg :candidates (resolve-missing msg) :status :done)) |
| 73 | + (reply transport msg :candidates (@resolve-missing msg) :status :done)) |
| 74 | + |
| 75 | +(def ^:private find-symbol |
| 76 | + (delay |
| 77 | + (require-and-resolve 'refactor-nrepl.find.find-symbol/find-symbol))) |
79 | 78 |
|
80 | 79 | (defn- find-symbol-reply [{:keys [transport] :as msg}]
|
81 | 80 | (config/with-config msg
|
82 | 81 | (with-errors-being-passed-on transport msg
|
83 |
| - (let [occurrences (find-symbol msg)] |
| 82 | + (let [occurrences (@find-symbol msg)] |
84 | 83 | (doseq [occurrence occurrences
|
85 | 84 | :let [response (serialize-response msg occurrence)]]
|
86 | 85 | (transport/send transport
|
87 | 86 | (response-for msg :occurrence response)))
|
88 | 87 | (transport/send transport (response-for msg :count (count occurrences)
|
89 | 88 | :status :done))))))
|
90 | 89 |
|
| 90 | +(def ^:private artifact-list |
| 91 | + (delay (require-and-resolve 'refactor-nrepl.artifacts/artifact-list))) |
| 92 | + |
| 93 | +(def ^:private artifact-versions |
| 94 | + (delay (require-and-resolve 'refactor-nrepl.artifacts/artifact-versions))) |
| 95 | + |
| 96 | +(def ^:private hotload-dependency |
| 97 | + (delay (require-and-resolve 'refactor-nrepl.artifacts/hotload-dependency))) |
| 98 | + |
91 | 99 | (defn- artifact-list-reply [{:keys [transport] :as msg}]
|
92 |
| - (reply transport msg :artifacts (artifact-list msg) :status :done)) |
| 100 | + (reply transport msg :artifacts (@artifact-list msg) :status :done)) |
93 | 101 |
|
94 | 102 | (defn- artifact-versions-reply [{:keys [transport] :as msg}]
|
95 |
| - (reply transport msg :versions (artifact-versions msg) :status :done)) |
| 103 | + (reply transport msg :versions (@artifact-versions msg) :status :done)) |
96 | 104 |
|
97 | 105 | (defn- hotload-dependency-reply [{:keys [transport] :as msg}]
|
98 |
| - (reply transport msg :status :done :dependency (hotload-dependency msg))) |
| 106 | + (reply transport msg :status :done :dependency (@hotload-dependency msg))) |
| 107 | + |
| 108 | +(def ^:private clean-ns |
| 109 | + (delay |
| 110 | + (require-and-resolve 'refactor-nrepl.ns.clean-ns/clean-ns))) |
| 111 | + |
| 112 | +(def ^:private pprint-ns |
| 113 | + (delay |
| 114 | + (require-and-resolve 'refactor-nrepl.ns.pprint/pprint-ns))) |
99 | 115 |
|
100 | 116 | (defn- clean-ns-reply [{:keys [transport path] :as msg}]
|
101 |
| - (reply transport msg :ns (some-> msg clean-ns pprint-ns) :status :done)) |
| 117 | + (reply transport msg :ns (some-> msg @clean-ns @pprint-ns) :status :done)) |
| 118 | + |
| 119 | +(def ^:private find-used-locals |
| 120 | + (delay |
| 121 | + (require-and-resolve 'refactor-nrepl.find.find-locals/find-used-locals))) |
102 | 122 |
|
103 | 123 | (defn- find-used-locals-reply [{:keys [transport] :as msg}]
|
104 |
| - (reply transport msg :used-locals (find-used-locals msg))) |
| 124 | + (reply transport msg :used-locals (@find-used-locals msg))) |
105 | 125 |
|
106 | 126 | (defn- version-reply [{:keys [transport] :as msg}]
|
107 | 127 | (reply transport msg :status :done :version (core/version)))
|
108 | 128 |
|
| 129 | +(def ^:private warm-ast-cache |
| 130 | + (delay |
| 131 | + (require-and-resolve 'refactor.nrepl.analyzer/warm-ast-cache))) |
| 132 | + |
109 | 133 | (defn- warm-ast-cache-reply [{:keys [transport] :as msg}]
|
110 | 134 | (reply transport msg :status :done
|
111 |
| - :ast-statuses (serialize-response msg (warm-ast-cache)))) |
| 135 | + :ast-statuses (serialize-response msg (@warm-ast-cache)))) |
| 136 | + |
| 137 | +(def ^:private warm-macro-occurrences-cache |
| 138 | + (delay (require-and-resolve 'refactor-nrepl.find.find-macros/warm-macro-occurrences-cache))) |
112 | 139 |
|
113 | 140 | (defn- warm-macro-occurrences-cache-reply [{:keys [transport] :as msg}]
|
114 |
| - (warm-macro-occurrences-cache) |
| 141 | + (@warm-macro-occurrences-cache) |
115 | 142 | (reply transport msg :status :done))
|
116 | 143 |
|
117 | 144 | (defn- stubs-for-interface-reply [{:keys [transport] :as msg}]
|
118 | 145 | (reply transport msg :status :done
|
119 | 146 | :functions (serialize-response msg (stubs-for-interface msg))))
|
120 | 147 |
|
| 148 | +(def ^:private extract-definition |
| 149 | + (delay |
| 150 | + (require-and-resolve 'refactor-nrepl.extract-definition/extract-definition))) |
| 151 | + |
121 | 152 | (defn- extract-definition-reply [{:keys [transport] :as msg}]
|
122 |
| - (reply transport msg :status :done :definition (pr-str (extract-definition msg)))) |
| 153 | + (reply transport msg :status :done :definition (pr-str (@extract-definition msg)))) |
| 154 | + |
| 155 | +(def ^:private rename-file-or-dir |
| 156 | + (delay |
| 157 | + (require-and-resolve 'refactor-nrepl.rename-file-or-dir/rename-file-or-dir))) |
123 | 158 |
|
124 | 159 | (defn- rename-file-or-dir-reply [{:keys [transport old-path new-path] :as msg}]
|
125 |
| - (reply transport msg :touched (rename-file-or-dir old-path new-path) |
| 160 | + (reply transport msg :touched (@rename-file-or-dir old-path new-path) |
126 | 161 | :status :done))
|
127 | 162 |
|
128 | 163 | (defn- namespace-aliases-reply [{:keys [transport] :as msg}]
|
129 | 164 | (reply transport msg
|
130 | 165 | :namespace-aliases (serialize-response msg (namespace-aliases))
|
131 | 166 | :status :done))
|
132 | 167 |
|
| 168 | +(def ^:private find-used-publics |
| 169 | + (delay (require-and-resolve 'refactor-nrepl.find.find-used-publics/find-used-publics) )) |
| 170 | + |
133 | 171 | (defn- find-used-publics-reply [{:keys [transport] :as msg}]
|
134 | 172 | (reply transport msg
|
135 |
| - :used-publics (serialize-response msg (find-used-publics msg)) :status :done)) |
| 173 | + :used-publics (serialize-response msg (@find-used-publics msg)) :status :done)) |
136 | 174 |
|
137 | 175 | (def refactor-nrepl-ops
|
138 | 176 | {
|
|
0 commit comments