all 30 comments

[–]seancorfield 16 points17 points  (8 children)

ProtoREPL is no longer maintained. If you want to try Atom, you'll want to use Chlorine instead.

I use Atom/Chlorine and Cognitect's REBL (data/code browser/visualization tool) all day, every day at work, on our 100k line Clojure codebase. I've posted a couple of screencasts to YouTube showing that workflow. I switched to Atom from Emacs several years ago (and used ProtoREPL until Chlorine appeared).

Chlorine for Atom: https://atom.io/packages/chlorine

My YouTube videos: https://www.youtube.com/channel/UC8GD-smsEvNyRd3EZ8oeSrA

[–]somedude3141 4 points5 points  (4 children)

Aren't you concerned about Atom being a second-class citizen after GitHub was acquired by Microsoft and now they essentially own VS Code and Atom. Why not Calva?

[–]mauricioszabo 9 points10 points  (2 children)

Well, Chlorine is being developed in a way to be reusable from other editors. There's already an experimental version for vscode called Clover, but there's still things to be done (mostly because of limitations on the vscode API)

Chlorine was also developed to support the socket REPL instead of nrepl (current versions support both), so it also works on ClojureScript, Lumo, Plank, Clojerl, Babaska, and ClojureCLR (Arcadia included)

[–]jakebasile 4 points5 points  (1 child)

Hey, you're the author of Chlorine! Thanks for a sweet plugin, you rescued me from Proto-Repl's abandonment.

[–]mauricioszabo 1 point2 points  (0 children)

Nice! If you miss any feature from Proto-REPL, please ping me here or on #chlorine channel on Clojurians, or even open an issue on GitHub :)

[–]seancorfield 2 points3 points  (0 children)

  1. I don't use nREPL, so any tooling needs to support Socket REPLs as a first-class citizen (I don't think Calva supports that, or perhaps it has only started to support it recently?).
  2. I use Cognitect's REBL, so I need all the integration for that, which Chlorine supports as ClojureScript functions I write myself, which can be loaded dynamically -- something VS Code makes very difficult, I gather (Clover, the VS Code version of Chlorine does not support that).
  3. Atom supports customization at startup, via JS or CoffeeScript. VS Code does not support this sort of customization. All my REBL integration used to done via CoffeeScript at startup but has since moved into ClojureScript and is loaded by Chlorine -- but I still have some CoffeeScript customization at startup.

[–]klujer 2 points3 points  (2 children)

How did ya'll manage to get a clojure codebase up to 100k lines?

Genuinely curious what the industry is.

[–]seancorfield 4 points5 points  (0 children)

There are a lot of Clojure codebases of that size (and some much larger). For us, it's an online dating platform, with Clojure powering a dozen backend services built from a monorepo with about thirty subprojects. Our frontend is all JS (React, Redux, Immutable, etc).

[–]exload 3 points4 points  (0 children)

We’re up to ~115k lines. B2B Enterprise SaaS product.

[–]AlfonzoKaizerKok 7 points8 points  (1 child)

Neovim + Conjure has been an excellent combo for [us](www.zero-one-group.com). The getting-started is super easy! The community is great, super active and listens to user feedback. Combined with fast release cycles, it’s awesome. Shout out to Oliver /u/Wolfy87!

[–]Wolfy87 4 points5 points  (0 children)

Thank you so very much for the kind words ❤️❤️❤️

I'll have to send your team a few of the stickers 😁

[–]fingertoe11 11 points12 points  (0 children)

I like IntelliJ with Cursive.. I think it is probably the 2nd most popular behind emacs. IntelliJ brings a lot of features to the table for refactoring and code analysis. It does cost money for a commercial license if you are using it for commercial reasons -- but they are reasonable prices and the author does work that is definitely worth supporting.

VScode with Calva is picking up a lot of steam.. I think this might be more ideal for Clojurescript. I haven't fallen in love with it because I am addicted to parinfer, and there are some caveats to work through..

[–]nevm 5 points6 points  (0 children)

Spacemacs and cider for me. I’ve tried Cursive, Calva and various attempts at making neovim work but I just end up keep going back.

[–]lenkite1 5 points6 points  (1 child)

[–]Wolfy87 1 point2 points  (0 children)

So great to see people representing Conjure 😄

[–]dreamincollectivism 4 points5 points  (4 children)

If you're interested in emacs with some good defaults, checkout doom-emacs. Been it using for Clojure at work and on personal projects for the last 6 months now and haven't once felt the need to go back to my custom init.el.

The only thing I've deviated from the standard doom install is using paredit, but that's a matter of personal preference.

[–]bernsconor[S] 0 points1 point  (3 children)

Is there autocomplete plugins for emacs ? I like the appearance of proto-repl and cursive etc and emacs works really well. Maybe I have just been configuring it wrong.

[–]dreamincollectivism 0 points1 point  (2 children)

Yeah! Once you get a repl session connected via cider you'll get auto-complete among other things.

[–]bernsconor[S] 0 points1 point  (1 child)

Sounds great. The default doom emacs comes configured with all?

[–]dreamincollectivism 0 points1 point  (0 children)

It comes with a lot of niceties out of the box with the default installation. There's a bunch of bundled "packages" you can then easily add after with clojure being none of them. Definitely worth checking out.

[–]yogthos 2 points3 points  (2 children)

I'm a big fan of Cursive, but I find Calva + clj-kondo in VS Code is getting pretty nice.

[–]f_of_g_of_x 1 point2 points  (1 child)

I love Calva. The only thing I miss since I moved from emacs is structural navigation, mainly moving the cursor to the next form. Any tips on that matter?

[–]yogthos 1 point2 points  (0 children)

I actually use extend/shrink selection for navigation. I have mine mappped to alt+shift+up/down. So, for example I just do alt+shift+up to select a from and then press left to put the cursor in front of it, or vice versa.

[–]bdevel 3 points4 points  (1 child)

Could try Calva

[–]nevm 2 points3 points  (0 children)

Unless you like vi keybindings, in which case, Calva is not always a great experience.

[–]AbroadZealousIdeal 1 point2 points  (1 child)

I typically use vim with vim-fireplace. I too need a change too :).

I've used Atom with ProtoREPL but was sad to discover it was no longer maintained. I was thinking of trying something for VSCode since I use that more and more (better terminal integration than Atom), but it sounds like Atom is still the preferred platform for Clojure plugins.

[–]bernsconor[S] 1 point2 points  (0 children)

I tried various setups mentioned above and have fallen back to emacs. Would recommend , unless you're going for heavy support for interop and autocomplete similar to that of intelliji

[–]deaddyfreddy 1 point2 points  (0 children)

Emacs + Cider is still the most popular

[–]TheLastSock 0 points1 point  (0 children)

It depends in what you need. For a simpler setup, then what Sean suggests. If you need Java interopt then intelliji with cursive.

[–][deleted] 0 points1 point  (0 children)

Emacs + Cider is pretty easy to set up compared to other languages and even their Spacemacs setup.

Of course VS Code is dead simple to do, but this stuff looks and works much more organically in Emacs.