@@ -131,117 +131,132 @@ invoke any command through M-x and its variants, the value of `last-command'
131
131
is not set to the command it invokes." )
132
132
133
133
; ; Operations
134
- (defun cider-inspector--value-handler (_buffer value )
135
- (cider-make-popup-buffer cider-inspector-buffer 'cider-inspector-mode )
136
- (cider-inspector-render cider-inspector-buffer value)
137
- (cider-popup-buffer-display cider-inspector-buffer t )
138
- (with-current-buffer cider-inspector-buffer
139
- (when (eq cider-inspector-last-command 'cider-inspector-pop )
140
- (setq cider-inspector-last-command nil )
141
- ; ; Prevents error message being displayed when we try to pop
142
- ; ; from the top-level of a data struture
143
- (when cider-inspector-location-stack
144
- (goto-char (pop cider-inspector-location-stack))))
145
-
146
- (when (eq cider-inspector-last-command 'cider-inspector-prev-page )
147
- (setq cider-inspector-last-command nil )
148
- ; ; Prevents error message being displayed when we try to
149
- ; ; go to a prev-page from the first page
150
- (when cider-inspector-page-location-stack
151
- (goto-char (pop cider-inspector-page-location-stack))))))
152
-
153
- (defun cider-inspector--out-handler (_buffer value )
154
- (cider-emit-interactive-eval-output value))
155
-
156
- (defun cider-inspector--err-handler (_buffer err )
157
- (cider-emit-interactive-eval-err-output err))
158
-
159
- (defun cider-inspector-response-handler (buffer )
160
- " Create an inspector response handler for BUFFER.
161
-
162
- The \" value\" slot of each successive response (if it exists) will be
163
- rendered into `cider-inspector-buffer' . Once a response is received with a
164
- \" status\" slot containing \" done\" , `cider-inspector-buffer' will be
165
- displayed.
166
-
167
- Used for all inspector nREPL ops."
168
- (nrepl-make-response-handler buffer
169
- #'cider-inspector--value-handler
170
- #'cider-inspector--out-handler
171
- #'cider-inspector--err-handler
172
- #'identity ))
173
-
174
134
;;;### autoload
175
135
(defun cider-inspect-expr (expr ns )
176
136
" Evaluate EXPR in NS and inspect its value.
177
137
Interactively, EXPR is read from the minibuffer, and NS the
178
138
current buffer's namespace."
179
139
(interactive (list (cider-read-from-minibuffer " Inspect expression: " (cider-sexp-at-point))
180
140
(cider-current-ns)))
181
- (cider--prep-interactive-eval expr)
182
- (cider-nrepl-send-request
183
- (append (nrepl--eval-request expr (cider-current-session) ns)
184
- (list " inspect" " true"
185
- " page-size" (or cider-inspector-page-size 32 )))
186
- (cider-inspector-response-handler (current-buffer ))))
141
+ (when-let (value (cider-sync-request:inspect-expr expr ns (or cider-inspector-page-size 32 )))
142
+ (cider-inspector--render-value value)))
187
143
188
144
(defun cider-inspector-pop ()
189
145
(interactive )
190
146
(setq cider-inspector-last-command 'cider-inspector-pop )
191
- (cider-nrepl-send-request
192
- (list " op" " inspect-pop"
193
- " session" (cider-current-session))
194
- (cider-inspector-response-handler (current-buffer ))))
147
+ (when-let (value (cider-sync-request:inspect-pop))
148
+ (cider-inspector--render-value value)))
195
149
196
150
(defun cider-inspector-push (idx )
197
151
(push (point ) cider-inspector-location-stack)
198
- (cider-nrepl-send-request
199
- (list " op" " inspect-push"
200
- " idx" idx
201
- " session" (cider-current-session))
202
- (cider-inspector-response-handler (current-buffer ))))
152
+ (when-let (value (cider-sync-request:inspect-push idx))
153
+ (cider-inspector--render-value value)))
203
154
204
155
(defun cider-inspector-refresh ()
205
156
(interactive )
206
- (cider-nrepl-send-request
207
- (list " op" " inspect-refresh"
208
- " session" (cider-current-session))
209
- (cider-inspector-response-handler (current-buffer ))))
157
+ (when-let (value (cider-sync-request:inspect-refresh))
158
+ (cider-inspector--render-value value)))
210
159
211
160
(defun cider-inspector-next-page ()
212
161
" Jump to the next page when inspecting a paginated sequence/map.
213
162
214
163
Does nothing if already on the last page."
215
164
(interactive )
216
165
(push (point ) cider-inspector-page-location-stack)
217
- (cider-nrepl-send-request
218
- (list " op" " inspect-next-page"
219
- " session" (cider-current-session))
220
- (cider-inspector-response-handler (current-buffer ))))
166
+ (when-let (value (cider-sync-request:inspect-next-page))
167
+ (cider-inspector--render-value value)))
221
168
222
169
(defun cider-inspector-prev-page ()
223
170
" Jump to the previous page when expecting a paginated sequence/map.
224
171
225
172
Does nothing if already on the first page."
226
173
(interactive )
227
174
(setq cider-inspector-last-command 'cider-inspector-prev-page )
228
- (cider-nrepl-send-request
229
- (list " op" " inspect-prev-page"
230
- " session" (cider-current-session))
231
- (cider-inspector-response-handler (current-buffer ))))
175
+ (when-let (value (cider-sync-request:inspect-prev-page))
176
+ (cider-inspector--render-value value)))
232
177
233
178
(defun cider-inspector-set-page-size (page-size )
234
179
" Set the page size in pagination mode to the specified PAGE-SIZE.
235
180
236
181
Current page will be reset to zero."
237
- (interactive " nPage size:" )
238
- (cider-nrepl-send-request
239
- (list " op" " inspect-set-page-size"
240
- " session" (cider-current-session)
241
- " page-size" page-size)
242
- (cider-inspector-response-handler (current-buffer ))))
182
+ (interactive " nPage size: " )
183
+ (when-let (value (cider-sync-request:inspect-set-page-size page-size))
184
+ (cider-inspector--render-value value)))
185
+
186
+ ; ; nREPL interactions
187
+ (defun cider-sync-request:inspect-pop ()
188
+ " Move one level up in the inspector stack."
189
+ (thread-first (list " op" " inspect-pop"
190
+ " session" (cider-current-session))
191
+ (cider-nrepl-send-sync-request)
192
+ (nrepl-dict-get " value" )))
193
+
194
+ (defun cider-sync-request:inspect-push (idx )
195
+ " Inspect the inside value specified by IDX."
196
+ (thread-first (list " op" " inspect-push"
197
+ " idx" idx
198
+ " session" (cider-current-session))
199
+ (cider-nrepl-send-sync-request)
200
+ (nrepl-dict-get " value" )))
201
+
202
+ (defun cider-sync-request:inspect-refresh ()
203
+ " Re-render the currently inspected value."
204
+ (thread-first (list " op" " inspect-refresh"
205
+ " session" (cider-current-session))
206
+ (cider-nrepl-send-sync-request)
207
+ (nrepl-dict-get " value" )))
208
+
209
+ (defun cider-sync-request:inspect-next-page ()
210
+ " Jump to the next page in paginated collection view."
211
+ (thread-first (list " op" " inspect-next-page"
212
+ " session" (cider-current-session))
213
+ (cider-nrepl-send-sync-request)
214
+ (nrepl-dict-get " value" )))
215
+
216
+ (defun cider-sync-request:inspect-prev-page ()
217
+ " Jump to the previous page in paginated collection view."
218
+ (thread-first (list " op" " inspect-prev-page"
219
+ " session" (cider-current-session))
220
+ (cider-nrepl-send-sync-request)
221
+ (nrepl-dict-get " value" )))
222
+
223
+ (defun cider-sync-request:inspect-set-page-size (page-size )
224
+ " Set the page size in paginated view to PAGE-SIZE."
225
+ (thread-first (list " op" " inspect-set-page-size"
226
+ " page-size" page-size
227
+ " session" (cider-current-session))
228
+ (cider-nrepl-send-sync-request)
229
+ (nrepl-dict-get " value" )))
230
+
231
+ (defun cider-sync-request:inspect-expr (expr ns page-size )
232
+ " Evaluate EXPR in context of NS and inspect its result.
233
+ Set the page size in paginated view to PAGE-SIZE."
234
+ (thread-first (append (nrepl--eval-request expr (cider-current-session) ns)
235
+ (list " inspect" " true"
236
+ " page-size" page-size))
237
+ (cider-nrepl-send-sync-request)
238
+ (nrepl-dict-get " value" )))
243
239
244
240
; ; Render Inspector from Structured Values
241
+ (defun cider-inspector--render-value (value )
242
+ (cider-make-popup-buffer cider-inspector-buffer 'cider-inspector-mode )
243
+ (cider-inspector-render cider-inspector-buffer value)
244
+ (cider-popup-buffer-display cider-inspector-buffer t )
245
+ (with-current-buffer cider-inspector-buffer
246
+ (when (eq cider-inspector-last-command 'cider-inspector-pop )
247
+ (setq cider-inspector-last-command nil )
248
+ ; ; Prevents error message being displayed when we try to pop
249
+ ; ; from the top-level of a data struture
250
+ (when cider-inspector-location-stack
251
+ (goto-char (pop cider-inspector-location-stack))))
252
+
253
+ (when (eq cider-inspector-last-command 'cider-inspector-prev-page )
254
+ (setq cider-inspector-last-command nil )
255
+ ; ; Prevents error message being displayed when we try to
256
+ ; ; go to a prev-page from the first page
257
+ (when cider-inspector-page-location-stack
258
+ (goto-char (pop cider-inspector-page-location-stack))))))
259
+
245
260
(defun cider-inspector-render (buffer str )
246
261
(with-current-buffer buffer
247
262
(cider-inspector-mode)
0 commit comments