chlorine-clover

About Chlorine for Atom and Clover for VS Code: https://atom.io/packages/chlorine and https://marketplace.visualstudio.com/items?itemName=mauricioszabo.clover
seancorfield 2019-09-23T17:35:52.080400Z

@mauricio.szabo Typo or duplicate line (in PR changes)?

•	New autocomplete for Clojure without Compliment
•	New autocomplete for ClojureScritp with Compliment
•	New autocomplete for ClojureScript with Compliment

mauricio.szabo 2019-09-23T17:36:54.080900Z

Copy-paste issues 🙂

mauricio.szabo 2019-09-23T17:37:20.081200Z

Thanks for catching it, I think I've fixed it on changelog

seancorfield 2019-09-23T17:38:52.081800Z

The new release isn't actually available yet, is it?

seancorfield 2019-09-23T17:41:12.082400Z

Ah, no, not merged yet. I'm looking forward to removing Compliment as a dependency 🙂

2019-09-23T17:43:08.082700Z

oh! after #98 is ink no longer a requirement?

seancorfield 2019-09-23T18:00:27.084200Z

Ink is still used to display inline results, yes? It's just not used for the REPL console any more...?

mauricio.szabo 2019-09-23T18:00:57.084700Z

Ink is still used to display inline results, but I'm thinking about removing it on a new version

mauricio.szabo 2019-09-23T18:02:32.086400Z

The first versions of Chlorine used ink extensively to generate the "results tree" and so on, but then I've migrated to Reagent, and now removed the console (also re-implementing it on Reagent) so there's little reason to keep the dependency

2019-09-23T18:12:32.086600Z

👍

mauricio.szabo 2019-09-23T18:23:28.088100Z

As for the version, it's still not published, probably today or tomorrow. I'm just adding some documentation. Removing compliment from the classpath means a simpler autocomplete, that'll probably not get all cases, but it is better than nothing :)

seancorfield 2019-09-23T18:39:03.088600Z

Thank you @mauricio.szabo -- I really like the move to fewer dependencies and simpler tooling, as you know 🙂

➕ 1
mauricio.szabo 2019-09-23T19:20:57.090400Z

Yes, the thing with Chlorine is that it can be as simple or complex as we want. I want to be able to detect if these "auxiliary libraries" are in the classpath and then use them, or simply fallback to a simple version 🙂

👍 1
seancorfield 2019-09-23T19:44:45.092100Z

That's how our REPL-starter works at World Singles Networks. If REBL is on the classpath, it starts that. If nREPL is on the classpath, it starts that. Else it just starts a Socket REPL. So each developer (and each environment) can control what functionality they get, just based on using aliases with clj to start things up.

Ahmed Hassan 2019-09-24T09:30:39.098Z

Can we use Chlorine with nREPL too?

seancorfield 2019-09-24T16:46:09.103400Z

Chlorine uses a bare Socket REPL (only). If you start a REPL based on nREPL, you'll need to provide JVM options to start a Socket REPL as well. For example, in my ~/.lein/profiles.clj file, I have a :socket profile like this:

:socket {:jvm-opts ["-Dclojure.server.lein={:port 55555 :accept clojure.core.server/repl}"]}
so I can do lein with-profile +socket ,,, and it will run the regular Leiningen command (`run`, repl, whatever) and also start a Socket REPL on port 55555.

👍 1
mauricio.szabo 2019-09-23T21:30:39.093100Z

Just for the record, I'm also adding a better way to extend Chlorine (so we don't need to require EditorUtils anymore), and documenting it here: https://github.com/mauricioszabo/atom-chlorine/blob/extension-points/docs/extending.md

👍 1
mauricio.szabo 2019-09-23T21:31:26.094200Z

This will be present on the next release. I'm also not removing the old commands for now, so there's time to migrate 🙂

seancorfield 2019-09-23T22:00:32.094800Z

@mauricio.szabo Don't forget EditorUtils.findNsDeclaration(...)

seancorfield 2019-09-23T22:01:15.095300Z

(your docs don't mention it so I don't know whether you implemented and just didn't doc it or...)

seancorfield 2019-09-23T22:07:31.096100Z

Just looking at that PR and there's no equivalent to findNsDeclaration() -- I use that in two one of my commands (and I can imagine others would too). The other usage was in calling the old evaluate and present API which no longer needs it

seancorfield 2019-09-23T22:10:33.097400Z

Also, what about calling evaluate on selections? Now that you've wrapped up text and range into a JS object, I guess users would have to build that themselves now. Not a big deal but might be a nice usability enhancement.