dirac 2017-03-02

@darwin: I have a setup where: boot runs on REMOTE server chrome canary runs on LOCAL laptop REMOTE server doesn't export any ports; so I can only access ports to it via SSH port forwarding on LOCAL laptop, I do ssh [remote] -L 8230:localhost:8230 -L 8231:localhost:8231 but dirac is still not working yet are there more ports that I need to open / forward to make this work? thanks!

in partiular, my probelm is that it hangs on

"unable to bootstrap clojurescript REPL due to a timeout"

so clearly there is some point I'm not forarding

try to export ports 8232-8242 as well

those are default ports for weasel connections

@darwin: https://github.com/binaryage/cljs-devtools/issues/35 means it's fixed right? (on github, I see it's closed, but not if it's "will not fix" or "fixed")

and you can see relevant links to commits in the issue

if you clicked through, you would see in which released versions is the fix included: https://github.com/binaryage/cljs-devtools/commit/ae982dc058f8d4236a77d72e6d992a6ee54ed36f

you see there “master” and v0.9.2

lol, the 'fix' was 4 lines of code and 40 lines of test?:-)

actually, the entire fix looks like a (fn [] ...) wrapper

yes, that is what makes it evaluate lazily

the magic was already implemented in <reference-surrogate> for some other reasons

@darwin: after doing a (dirac! :join) are there special commands I can send via the repl to do things like: (1) turn on pause on exception (2) turn off pause on exception (3) force-reload ?

Is this a 'no, because it's fundamentally against principles of dirac' or 'not high priority, but could be done as contracting work' ?

it could be done, I didn’t think about automating devtools ui via repl connection

I guess if you're using cursive/dirac, there isn't a need

you can try to take a stab at it

before I could tackle this, I'd have to be able to install dirac from source right?

since I'd have to hack on the actual dirac cljs files itself

you could introduce a new nrepl message and implement support in your nrepl client, or you could abuse the eval :op

for example here you could have a special case detecting a special form and handle it inside devtools fork context (e.g. switching some devtools UI or talking via debugger protocol to chrome debugger): https://github.com/binaryage/dirac/blob/master/src/implant/dirac/implant/intercom.cljs#L412

C-c C-c sent via the repl is a special :op right?

“implant” is cljs code injected (or implanted) into devtools app which is mostly javascript

I recall those msgs going through even when the repl "hangs"

have no idea what C-c C-c is

C-c C-c sends a single C-c when in emacs

it causes devtools dirac to print a msg saying "requested to cancel job XYZ"

this is something your nrepl client prints or some of your nrepl middlewares print, not related to dirac

if your nrepl client inside emacs prints something to screen it does not necessary mean that it sent something over the wire to nrepl server

I assume that was just a feedback that you as a user attempted to cancel a running job

dirac does not support that