This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
- # aleph (1)
- # announcements (2)
- # aws (3)
- # bangalore-clj (1)
- # beginners (136)
- # boot (3)
- # calva (89)
- # cider (44)
- # cljdoc (1)
- # cljs-dev (31)
- # clojure (101)
- # clojure-europe (3)
- # clojure-italy (52)
- # clojure-nl (7)
- # clojure-spec (12)
- # clojure-uk (34)
- # clojurescript (62)
- # community-development (46)
- # cursive (25)
- # datomic (6)
- # duct (26)
- # events (6)
- # figwheel-main (4)
- # fulcro (25)
- # graphql (2)
- # jackdaw (4)
- # jukebox (3)
- # kaocha (57)
- # leiningen (31)
- # off-topic (3)
- # onyx (4)
- # other-languages (22)
- # pathom (18)
- # re-frame (9)
- # reitit (3)
- # shadow-cljs (60)
- # spacemacs (9)
- # speculative (22)
- # sql (39)
- # tools-deps (45)
- # vim (37)
It's been a long time cooking, but here is the beta release of the new Calva REPL!
With code completion, automatic formatting, syntax highlighting and rich exception reporting.
This is a significantly big addition to Calva, and we hope it will make the general day to day experience far more pleasant.
This build has paredit built in- you may need to disable
calva-paredit if the extension has trouble starting.
To open a clojure/clojurescript repl once connected, use the "Open Clojure(Script) REPL Window" command.
If you accidentally do something silly like try to
(cycle '[infinite]), or have a runaway computation, Ctrl+D will interrupt it for you.
To go up/down the history, use Alt+Up, Alt+Down.
To force delete parenthesis when our new (repl only for now) paredit doesn't want to, use Alt+Backspace or Alt+Delete.
Let us know how you get on, and what you think! All comments and feedback welcome!
the final release you won't need to do anything, but it may occasionally conflict with this preview
it is a clone of that to a large extent, we will be integrating that so they share the exact same codebase shortly
the underlying text model used for the repl control is a (slightly) more advanced version of what calva-fmt uses currently.
Dear tester, A particular thing we you can keep an eye on when testing is that occasionally the REPL connection stops working when you close the CLJS REPL window. If you see any pattern to that madness, please let us know!
Chances are you do not need to disable Calva Paredit when testing the preview. VSCode disables it for me, at least. If you get a message about paredit failing to start, then things are all good. If you leave it enabled and don't get that message, please tell us.
does this support connecting to the regular cider repl? it's only giving me figwheel as an option, my project has both clj and cljs via fighwheel
Yes, that is a bit unclear. Both connections are established and you can open both a CLJ and CLJS REPL window.
(So the Figwheel prompt is Calva’s way to tell you it has identified that the project includes a Figwheel conf and offers to connect to that repl.)
Thanks! 😀. I am trying to get a bit of a feel for the old symbolics lisp machines. Glad you are liking it.
@jeremy642 https://github.com/BetterThanTomorrow/calva/issues, thanks! There are still probably a few rough edges
Or click on the github link in the console welcome message. That should get you there too ;)
@all I refuse to believe I haven't riddled this update with bugs. Where are my issues? ;) thanks to all you brave souls trying it out!
Ensure the cursor is blinking and not hollow. It is 100% possible something is b0rked of course
And on the blinking/not blinking, switching windows seems to get it caught in not blinking every now and then.
I can’t right click on the repl either, so no chance to get the modal to pop up to paste that way.
That part is just broken huh? Definitely want to solve that one. Clicking on the window may focus the repl and get it blinking again though? I have somewhat hacked focusing the console atm, looking towards letting you stream your own widgets that may have input fields into the console
Yeah that is a bit of a mess atm. I can kludge something to make it work but need to work out a better way
Basically it's a web page with blood sweat and tears attempting to make it a believable vscode window ;)
Theme support is terrible btw. We really can't even get colours from the syntax highlighting theme :/
hey, I realize this channel is for Calva, but some people in the community expressed interest when I talked previously so I thought I would preview it here before I officially released: Introducing Punk, a REBL-like data browser that runs in… your browser! https://github.com/Lokeh/punk
(btw I know it’s Emacs in my README video but I promise I also use VS Code/Calva too :P)
I want to let you stuff new widgets directly into the repl so you can do your thing for everyone else ;)
well and I’ve been thinking about the other direction… how could I get a REPL into Punk? :thinking_face:
It's gonna get sloppy but I reckon we can work it out. Trick is... to let the clojure host inject into our webview
I think we will need to inject nREPL middleware and faff around using the cljs compiler, but it is doable with a lot of pain :)
At bare minimum getting punk in would be great, but you strike me as a hairy undocumented lisp/dom hacker 😀
😬 well one thing I wanted to avoid with Punk was forcing people to hack around with nREPL stuff like REBL makes you do with most modern setups
also I’m not sure if I should take > hairy undocumented lisp/dom hacker as a compliment or an insult 😂
I haven't even touched tap> yet. Mostly because I am waiting for cider-nrepl to not NPE when I ask for a stacktrace under 1.10 😂
But yeah. I have a few crazy ideas. Ultimately I want to be able to import e.g a rebl or graph api in my codebase and allow people to splat out their widgets directly into the console.
it seems like there’s lots of attempts at these kind of debugging dashboards like Punk, re-frame-10x, data-frisk-reagent
Actually in the longer term I think the ability for you to provide a rebl tab is also vital
But again, it should be the same principle, inline in the repl it would be less usable though.
yeah. I think having a tab or another window open, but having it all integrated and managed in one place
I feel like I have plenty of mountains to climb just getting Punk sorted out 😅 I still have yet to get it working in a JVM
We're looking at putting all the repls in a single 'calva' window. So you could have first class place in there
:thinking_face: it sounds like the new Calva REPL just runs like a web page in VS Code. so atm if you’re doing server-side stuff, it might not be too hard at all to plop Punk on a page similarly
the tricky bit would be getting to connected to a web app, which I think is the hardest thing to do with REBL too
That's the fun. You can fit. Just need a way to let you inject there as a dev dependency. It's a rough sketch atm in my head but this is what I am after long term
As far as comms go, you get a postmessage type api that connects you to the running process you can use
But very internal. Need to open it up in a way that is usable. Lisp is about you kicking ass 🙏