This is a collection of modules (not easily seperable, perhaps) written
in and for Gauche Scheme (though it shouldn't be too difficult to port
it to any scheme that can implement %with-immediate-input) for the
purpose of implementing a simple and flexible human-input mechanism.

It's not quite finished: this release lacks documentation and the
following planned features:

  1. vertically-scrolling input
  2. fixed-column input

The default input mechanism is a side-scrolling entire-row-consuming
'GNU Readline'-like single-line text-reader.  The default keymap
provides most (or all?) of the expected control-bindings, as well as
these two silly and irresponsible additions:

  1. C-r (Control+R), which toggles reverse-input-mode.
  2. M-r (Meta+r, Escape+r, or ALT+r), which toggles rot13-filtered
     input.

The default 'history' keybindings (C-p and C-n) differ somewhat from
the expected behaviors -- see BUGS.  Also, this library doesn't
attempt to limit the size of the history in any way -- it's simple
enough for a user program to truncate the history, though:

  (hash-table-put! *readline-keymap* (char->control #\t)
    (lambda (state spec exit)
      (hash-table-put! state 'last-history
        (take-right (hash-table-get state 'last-history)
                    *some-user-limit*))))

All of this library is reentrant; the only possble danger is from
*readline-keymap*, which is the default keymap -- however, keymaps
are also part of 'reentrant' state and there is nothing stopping
multiple or recursive invocations of readline from using very different
keymaps without interference.

This library (under Gauche Scheme) is, to the best of my knowledge,
fully aware and considerate of multibyte characters.  This is hardly a
difficult state for a program under Gauche to be in, but I thought I'd
mention it.

Please see COPYING for the (brief) licensing information, INSTALL for
the (brief) installation instructions, and examples/*.scm for (brief?)
examples of this program's functionality.  Hopefully the effort I've
directed at examples will make up, somewhat, for the effort I've
failed to direct at documentation.


28 Aug 2002
Julian Fondren
cleverjulian@hotmail.com

