SNOT -- An MzScheme repl for Emacs. This code is copyleft 2007 Tom Schouten . See the file COPYING. The file snot.el is heavily inspired by David Smith's ielm.el from the GNU Emacs source. Features * one mzscheme process per emacs session * simple s-expression protocol on stdout of mzscheme process scheme -> emacs: emacs -> scheme: ( ) * lowlevel communication is asynchronous, synchronous on top of that. * multiple language support, each language has 'eval' and a repl that operate in parallel (a synchronous 'message' and an asynchronous 'repl' channel), and a symbol completer. * sandbox.ss support + transparent repl using `snot-send-module' * incremental macro expander repl using 'expand-once' on blank lines. Install Put the file snot.el to somewhere in your emacs load path. Edit the variable `snot-load-ss' to point to the snot/load.ss file from the distribution. The default is /usr/share/emacs/site-lisp/snot/load.ss Configuration The file ~/.snotrc is loaded when snot is loaded. It can be used to load functionality into the snot toplevel, which emacs uses. This is the place to define new languages using `snot-register-language'. See the calls `register-language' in snot.ss REPL modes The default key binding for switching languages in the REPL is 'C-d'. By default 3 language REPLs are defined: snot toplevel snot environment box sandboxed evaluator box-macro 'expand-once' macro repl (eval and completer are from box) History SNOT originated as part of my BROOD project, an interactive forth compiler written in scheme. I needed a way to interact with the different language levels present in the system: scheme -> compositional scheme -> forth macros -> interactive forth. I am aware of SLIME, but it looked like a better idea to write my own simple version and let it grow according to my specific need. It's not rocket science. An yes I know the name is ridiculous and hurts my serieux. I tried to change it but you know, names stick.