@pez @dominicm The debugger is not complex and is pretty well documented, btw. http://cider.readthedocs.io/en/latest/debugging/#internal-details
As is what needs to be done for it to work with ClojureScript https://github.com/clojure-emacs/cider/issues/1416
Unfortunately this required significantly better knowledge of cljs than me or Artur have, so we hoped someone else would tackle this eventually.
The protocol information was what overwhelmed me. It didn't seem to work like other middleware.
track-state? That’s pretty simple when you look at it. Just some ns info that we push back to the clients so they won’t have do a crazy amount of requests.
Eventually we found some other good uses for this data - e.g. it sped up a lot dynamic font-locking and dynamic indentation as the client didn’t have to ask for the data anymore. It would just be automatically synced after each eval-like op.1🤘
There seemed to be some single letter information used for the debugger.
I want to look into that, as sometimes opening a file can take a half second.
I think the single letter commands you refer to exist mostly for the client, obviously they could be whatever. Don’t remember all the details, though - haven’t worked on it for a long time and it was always Artur who did most of the work. I recall he re-wrote the debugger 2 times from scratch as he came up with better and better ideas.
Anyways, I actually dropped by to share with other tool maintainers that orchard’s first release is out https://github.com/clojure-emacs/orchard I’d love to get some feedback and more people involved here, so we can make some truly useful foundational library for Clojure dev tools. 🙂 We’ve got a long way to go, but at least we made the first step.4🦜