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 | 9a2bbfd255c1e64a632a900a02337a136536c1dd (patch) | |
tree | d4c9271fcfeb5364c4e5b66dbdbbe1371f75168f | |
parent | 0be9384a6812343b82a01c1af3a45b677a0a12be (diff) | |
download | geiser-9a2bbfd255c1e64a632a900a02337a136536c1dd.tar.gz geiser-9a2bbfd255c1e64a632a900a02337a136536c1dd.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. |