/geiser-scsh

Geiser support for Scsh

Primary LanguageScheme

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    Geiser support for scsh 0.6.7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                            * QuickStart *
--------------------------------------------------------------------

Here's how to get up and running.  These instructions assume you
already have scsh 0.6.7 installed and available in your PATH.

1. Byte-compile and load up `geiser-scsh.el'.

2. Set the Elisp `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/"))

3. Tell Geiser where to find your Info manuals (this assumes you have
installed the scsh Texinfo manual available at
https://github.com/rmloveland/scsh-manual-texinfo).

  (setq geiser-scsh-manual-lookup-nodes '("scsh" "r5rs"))
  (setq geiser-scsh-manual-lookup-other-window-p t) ;Optional, but convenient.

Note: If Info lookup isn't working, try `M-x info-lookup-reset' to
clear info's cache so that it can see your scsh manual install.

4. Run `M-x customize-group ENTER geiser ENTER', and set the following
variables:

Variable 	                       Value        
--------------------------------------------------------------------
Geiser Repl Skip Version Check P       on
Geiser Active Implementations          scsh
Geiser Default Implementation          scsh

(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.)

5. Try `M-x run-scsh' and see what happens.

At this point, you should be able to enjoy your scsh hacking with nice
symbol and module completions, macroexpansions, etc.  If you’re going
to hack on the Geiser support, do `C-u M-x geiser-show-logs'; a buffer
will open where you can listen to Emacs and scsh talking.  And if all
else fails, the source is your friend. :-}

                             * Overview *
--------------------------------------------------------------------

This project aims to make scsh one of the Scheme implementations
supported by Geiser.  For more information about scsh and Geiser, see
http://www.scsh.net and http://geiser.nongnu.org, respectively.

Right now scsh 0.6.7 (classic) is being worked on, but it shouldn't be
too hard (one hopes) to get 0.7 working too.  Interested Scheme
hackers can check out scsh 0.7 here: https://github.com/scheme/scsh.

See the TODO.txt file for a matrix of Geiser commands and their
current implementation statuses.  A healthy portion of Geiser's
functionality is implemented, enough to hack scsh's Geiser support
from inside Geiser itself.  Which is good fun. :-}

Note that this work is still in progress.  In some modules, the most
basic possible versions of the Geiser interfaces are exported by each
module; in a number of cases when a procedure can return '() or #f, we
do so (pending a better solution to be implemented later, of course).

Help from any interested Scheme hackers is appreciated.

You can get the scsh 0.6.7 manual in Texinfo format here:
https://github.com/rmloveland/scsh-manual-texinfo

                         * Acknowledgements *
--------------------------------------------------------------------

Thanks to Taylor Campbell for writing SLIME48, from which most of the
symbol and module completion code was adapted.  It's also just a great
source of knowledge about how to write Scheme 48 programs.  For more
info about SLIME48, see http://mumble.net/~campbell/slime48.html.

And thanks to jao, for Geiser!