|
1 | 1 | (ns cider.nrepl.middleware.debug
|
2 | 2 | "Expression-based debugger for clojure code"
|
3 | 3 | {:author "Artur Malabarba"}
|
4 |
| - (:require [clojure.tools.nrepl.transport :as transport] |
5 |
| - [clojure.tools.nrepl.middleware :refer [set-descriptor!]] |
6 |
| - [clojure.tools.nrepl.misc :refer [response-for]] |
7 |
| - [clojure.tools.nrepl.middleware.interruptible-eval :refer [*msg*]] |
8 |
| - [cider.nrepl.middleware.util.instrument :as ins] |
9 |
| - [cider.nrepl.middleware.inspect :refer [swap-inspector!]] |
| 4 | + (:require [cider.nrepl.middleware.inspect :refer [swap-inspector!]] |
10 | 5 | [cider.nrepl.middleware.stacktrace :as stacktrace]
|
11 | 6 | [cider.nrepl.middleware.util.cljs :as cljs]
|
12 | 7 | [cider.nrepl.middleware.util.inspect :as inspect]
|
| 8 | + [cider.nrepl.middleware.util.instrument :as ins] |
13 | 9 | [cider.nrepl.middleware.util.misc :as misc]
|
| 10 | + [clojure.tools.nrepl.middleware :refer [set-descriptor!]] |
| 11 | + [clojure.tools.nrepl.middleware.interruptible-eval :refer [*msg*]] |
| 12 | + [clojure.tools.nrepl.misc :refer [response-for]] |
| 13 | + [clojure.tools.nrepl.transport :as transport] |
14 | 14 | [clojure.walk :as walk])
|
15 | 15 | (:import [clojure.lang Compiler$LocalBinding]))
|
16 | 16 |
|
|
285 | 285 | (when (instance? clojure.lang.Atom session)
|
286 | 286 | (swap! session update-in [#'*data-readers*] assoc
|
287 | 287 | 'dbg #'debug-reader 'break #'breakpoint-reader)
|
288 |
| - (swap! session assoc #'*skip-breaks* (atom nil)) |
289 |
| - ;; The session atom is reset! after eval, so it's the best way of |
290 |
| - ;; running some code after eval is done. Since nrepl evals are async |
291 |
| - ;; we can't just run this code after propagating the message. |
292 |
| - (add-watch session ::track-instrumented-defs |
293 |
| - (fn [& _] |
294 |
| - (try |
295 |
| - (when (map? @debugger-message) |
296 |
| - (let [ins-defs (into [] (if ns (ins/list-instrumented-defs ns)))] |
297 |
| - (debugger-send {:ns ns :status :instrumented-defs |
298 |
| - :instrumented-defs (misc/transform-value ins-defs)}) |
299 |
| - (remove-watch session ::track-instrumented-defs))) |
300 |
| - (catch Exception e))))) |
| 288 | + (swap! session assoc #'*skip-breaks* (atom nil))) |
301 | 289 | ;; The best way of checking if there's a #break reader-macro in
|
302 | 290 | ;; `code` is by reading it, in which case it toggles `has-debug?`.
|
303 | 291 | (let [has-debug? (atom false)
|
|
0 commit comments