diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2018-01-26 01:39:30 +0100 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2018-01-26 01:39:56 +0100 |
commit | 3255eac184613601aa11b59fd3afd2d5ba13d12e (patch) | |
tree | c6625f48246303dd402f8d314546cd008844eb1d | |
parent | 0bfc6be0d25ff311d739d2f65fd343135142f6f3 (diff) | |
download | geiser-guile-3255eac184613601aa11b59fd3afd2d5ba13d12e.tar.gz geiser-guile-3255eac184613601aa11b59fd3afd2d5ba13d12e.tar.bz2 |
New HACKING file
-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. |