diff options
Diffstat (limited to 'HACKING')
-rw-r--r-- | HACKING | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -0,0 +1,26 @@ +## How to support a new Scheme implementation + +Geiser works by running an instance of a REPL, or remotely connecting +to one, and evaluating the scheme code it sees there. Then, everytime +it needs to perform some operation (like, say, printing autodoc, +jumping to a source location or expanding a macro), it asks the +running scheme instance for that information. + +So supporting a new scheme usually means writing a small scheme +library that provides that information on demand, and then some +standard elisp functions that invoke the procedures in that +library. + +To see what elisp functions one needs to implement, just execute the +command `M-x geiser-implementation-help` inside emacs with a recent +version of geiser installed. And then take a look at, say, +geiser-guile.el or geiser-racket.el for examples of how those +functions are implemented for concrete schemes (those are the most +featureful implementations we have, so perhaps it's easier to begin +with something like geiser-chicken.el or geiser-chibi.el). + +Not all schemes can provide introspective information to implement all +the functionality that geiser tries to offer. That is okay: you can +leave as many functions unimplemented as you see fit (there is even an +explicit list of unsupported features), and geiser will still know how +to use the ones that are implemented. |