In this post I’d like to announce an early version of scsh support for Geiser . There’s plenty left to do, but enough of Geiser is working that you can write scsh with real completions provided by scsh itself! What’s more, if you want to you can hack on the Geiser support from the inside. :-}

Working features include:

Symbol and module completion

Module imports (mostly)

view macroexpansions in buffer

Talking to Geiser over its async protocol (the foundation of everything else)

Some features aren’t there yet:

Jumping to procedure definition in source

Show callers/callees of a procedure

Jumping to module source

Jumping to documentation for the thing at point (I’ve only gotten this to work sporadically for some reason)

Getting the Code You can get the code here: https://github.com/rmloveland/geiser-scsh See the README and TODO.org files in the repo for more detailed information about project goals and what works and what doesn’t. Feel free to open issues on Github for any broken things (there are plenty). You can also get a copy of the scsh manual in Texinfo here – please let me know if you can get the Geiser doc commands working with it, so far I haven’t had much success: https://github.com/rmloveland/scsh-manual-texinfo

Getting Started There are a few setup quirks: First, set Emacs’ geiser-scheme-dir variable to wherever you’re working from; here’s what I do: (setq geiser-scheme-dir (expand-file-name "~/Code/geiser-scsh/scheme/" ))

variable to wherever you’re working from; here’s what I do: Second, go ahead and load up geiser-scsh.el from the git repo.

from the git repo. Next, hop into Customize via M-x customize-group ENTER geiser ENTER , and set the following:

Custom Variable Value Note Geiser Repl Skip Version Check P on You must set this, or else Emacs throws you into the debugger. This is a bug I need to fix. Geiser Active Implementations scsh Geiser Default Implementation scsh I do this since I’m mostly working in scsh, but it shouldn’t be necessary. (Note that you’ll need to set geiser-scheme-dir back to its original value if you want to go back to using Guile or Racket.) At this point, you should be able to do M-x run-scsh and enjoy your scsh hacking with nice completions and whatnot. If you’re going to hack on the Geiser support, do a C-u M-x geiser-show-logs ; a buffer will open where you can listen to scsh and Emacs talking. And of course, the source is your friend. :-} (Image courtesy RayMorris1 under CC-BY-NC-ND license.)