I was using SLIME a lot when working with CL, but didn't look deeply into the implementation. SLIME's architecture is basically the option 3 I listed before (local (socket-) server, in SLIME that's SWANK). And there is already SLIME support (at least) for Kawa and MIT-Scheme, where I didn't get the Kawa-part running. Even then I think that CL has much more focus on the idea of image-based development in a long running session and it has deep technical support for that (whereas Scheme with it's focus on simplicity does not have this focus; e.g. Per Bothner explicitly mentions somewhere for Kawa that one cannot expected that re-evaluating the same defines will always work within the same Kawa REPL session). So as much as I admire SLIME, I'm not sure whether the effort to use it for integration for many Scheme's will be worth the effort - but again this depends from the total scope we plan to support.
These are interesting points that I hadn't realized to consider.
I thought SWANK might be the right place to start but I don't
actually know anything about it.
Sounds like a perfect plan!
Still SLIME would be a perfect place to check for interesting features and maybe it's possible to re-use parts of the Emacs-side of SLIME. My idea for next steps would be:
- Check LSP features and pick what we want to support from there.
- Check SLIME/SWANK features and pick what we want to support from there; check whether/which Emacs-lisp can be re-used.
- Decide how to split functionality between client and server.
- Derive server-side features from that, implement (one Scheme).
- Derive client-side features from that, implement (n Schemes, m editors).
I also checked Geiser, but since I'm using some Schemes which are not supported by Geiser and since it quite heavily impacts your Emacs setup, I'm not using it. I recently had a post with some simply Scheme-helpers I'm using for different Schemes - mostly documentation access and minimal REPL integration.
You mean one of your GitHub Gists right?
By the way, feel free to create new repos under the schemedoc
organization any time you like. You have a lot of good stuff in
the Gists so maybe they could make good starting points for some
repos to explore all this stuff. There's also an empty repo https://github.com/schemedoc/schemedoc.el
waiting for someone to commit some Emacs work into it :) I don't
know whether schemedoc.el is a good name - feel free to rename it
to something else if you want to.
I wonder if anyone among us knows the authors of Geiser. If we're doing LSP-style stuff it would be good to have them involved in the discussion in any case. They doubtless know some useful stuff that we don't.