Email or username:

Password:

Forgot your password?
Andrew Tropin

I fought FOMO (fear of missing out) so hard that I missed my Q&A for EmacsConf 2023 (:

The talk was about Guile Scheme IDE:
emacsconf.org/2023/talks/schem

I would really love to hear your feedback and questions, so if you have some, post it here or reach me out via trop.in/contact

Kudos to @sachac and the organizers team for making such a great conference.

#emacs #emacsconf #guile #scheme #lisp #guix #rde

11 comments
Remco

@abcdw I saw your presentation this morning. Cool stuff! My question: it seems there would be a lot of overlap between the cider nrepl emacs client code for clojure and your arei code for guile. Are there any opportunities here to create commons or are the differences too big?

Andrew Tropin

@rwv Thank you!

Yep, I reuse some parts of CIDER (for example bencode and related utils), but not much can be reused unfortunatelly, there are a lot of legacy + clojure-specific stuff, so it hard to share code with Arei. Probably some fancy continuations stuff + debugger for scheme will be completely irrelevant for Clojure and CIDER. So I think it's ok to develop those projects in parallel.

charliemac

@abcdw @sachac You might be able to still answer the Q&A questions on the Etherpad...

Sacha Chua

@abcdw haha, that's cool, that's cool! Life happens. :)

Mirko Hernandez

@abcdw

Fantastic stuff, it is great for guile that clients can be created for other editors. Just some ideas for an IDE:
- srfi and ice-9 hints for identifiers. (To help newcomers)
- geiser works great (goto definition, documentation, eldoc hints) but only for the modules that are loaded. Could it be possible to optionally "load everything" in a different context in the nrepl?
- a debugger like edebug would be ideal, currently does nrepl have any simpler features to help debugging?

Andrew Tropin

@mirkoh
1. Do you mean some description of the module in completion candidate?

2. At the moment we use mechanism similiar to geiser's (it shows candidates, which are reachable from current module with current imports), but we have the whole power of guile, so everything what possible with guile possible in Ares RS and Arei :)

3. debugger is not a part of nrepl protocol, but it can be implemented on top of nrepl and we plan it, however it's a lot of work.

github.com/clojure-emacs/cider

@mirkoh
1. Do you mean some description of the module in completion candidate?

2. At the moment we use mechanism similiar to geiser's (it shows candidates, which are reachable from current module with current imports), but we have the whole power of guile, so everything what possible with guile possible in Ares RS and Arei :)

Mirko Hernandez

@abcdw
1. Yes, I usually have the info manual on the side but it is still annoying to having to go and find a module for a function.
2. Yes, I rely on the autocompletion to find useful functions, but sometimes if a module is not part of "base guile" It does not work unless I load the module first.
3. Yes I understand that a debugger is a long way to go. I meant some commands that could help with debugging, like displaying the locals or backtrace by default or something similar.

Andrew Tropin

@mirkoh
1. No such thing yet, completion is bare-bone at the moment, but it's open to extension.
2. Show the guile snippet or pseude code please, it can help me understand better what you mean.
3. At the momnet there are no debugging capabilities except printing a backtrace and exception.

If you have any ideas on how to implement particular functionality (the code or just the overall idea) drop a message on rde-discuss or rde-devel:
lists.sr.ht/~abcdw/

Mirko Hernandez

@abcdw

2. For example call geiser-doc-symbol-at-point and try to find the string-match function. It requires (ice-9 regex) to already be loaded.

I was not familiar with the sourcehut platform, I would be happy to collaborate (I need to learn this email workflow)

I have thought about using geiser-eval--send to eval some modules in a separate buffer, and also to somehow extract the list of symbols out of the modules, a hacky solution for points 1 and 2. I will explore this.

Andrew Tropin

@mirkoh the currently implemented completion is module-aware and shows only symbols available in module environment (and it seems to be a proper OOTB behavior).

Theoretically, we can traverse all the modules in load-path and collect all the symbols available and provide a list of them via arei-find-symbol or something similiar. It can make sense for some use cases (to find a function without importing module upfront for example).

Andres Moreno

@abcdw @sachac

Wonderful talk, Andrew! I think this is an excellent path forward for Scheme development.

Restarting continuations was particularly interesting--it suggests a really nice path for interactive development where you don't have to reset state.

Go Up