
Yi -- the Haskell extensible editor

<http://www.cse.unsw.edu.au/~dons/yi.html>

Copyright (c) Don Stewart 2004.
<http://www.cse.unsw.edu.au/~dons>

QUICK START

* GHC 6.2.2: install hs-plugins-0.9.8.
* GHC 6.4  : install the latest hs-plugins nightly snapshot.
* Or don't install hs-plugins at all, and use 'make way=static'

    $ autoreconf                -- NB autoREconf
    $ ./configure --prefix=/my/dir
    $ make
    $ ./yi-inplace README

Read on for more details..

BUILDING AND INSTALLING

You can get the latest yi source from its darcs repository:

        darcs get http://www.cse.unsw.edu.au/~dons/yi

You will need GHC 6 (The Glorious/Glasgow Haskell Compilation System)
and GNU make to compile yi. On OpenBSD you'll need ghc-6.2.2 or greater, 
which contains a patch for the System.Posix.User library.

If you're building with ghc-6.2.2, you need hs-plugins-0.9.8, if you're
using ghc-6.4, then you need a more recent nighly snapshot of
hs-plugins, the Haskell dynamic loader library. You can get this from:

        http://www.cse.unsw.edu.au/~dons/hs-plugins/

Getting the most recent snapshot will work. Make sure you "make", "make
install" and "make register" the hs-plugins library. 

If you are working from the darcs repository you'll need autoconf and
automake installed for generating the configure files.

Once you have ensured that you have these programs and libraries
installed:

 1. autoreconf
    ./configure --prefix=/my/dir

 2. Run 'make'         ('gmake' on some systems)

 3. Run 'make install' to install it, and then use 'yi' or 'yi-static'
        OR
    Just use './yi-inplace' (or 'yi-static') directly in the build 
    tree (without having to install) 

Hint: 'make show-install' will show you which directories yi wants
to install into. These are editable in mk/config.mk

Useful targets:
        make                    -- build the lot
        make boot               -- regen the dependencies
        make all                -- compile the .hs source
        make install            -- install into $(PREFIX)
        make show-install       -- print install paths
        make clean              -- remove most rebuildable stuff
        make distclean          -- remove anything that can be regenerated
        make docs               -- build all the docs
        make html               -- build the haddock docs

        make way=p              -- build a profiling version of yi
        make way=static         -- build a static-only version of yi

CONFIGURATION

All configuration (bindings, colours) is done at either build time by
editing the yi src, or at runtime by editing ~/.yi/Config.hs.  Example
config files are in examples/.

PORTABILITY

Yi is developed on OpenBSD, FreeBSD and Debian Linux. Dynamic
configuration relies on the hs-plugins library, which has been ported to
most platforms (but currently not Windows -- however yi-static should
work on Windows with a little porting effort). Yi requires GHC 6 with a
working GHCi implementation. 

A porting checklist:

        * you have GNU make
        * you have a recent autoconf and automake
        * you have GHC >= 6.2.1         (>= 6.2.2 on OpenBSD)
        * you have a working GHCi
        * you have hs-plugins >= 0.9.8
        * you have haddock installed (for the documentation)

The static version of yi has no hs-plugins support, and is thus more
portable (you only need GHC 6.0, too). However, it is not configurable
at runtime. To build this, you'll just need to be on a machine with ghc
installed.

CREDITS

Yi has been developed by Don Stewart <http://www.cse.unsw.edu.au/~dons>
with the help of the #haskell irc community.

Yi is derived from Riot <http://iki.fi/tuomov/riot/>, written by
Tuomo Valkonen.

The Curses and CWString interface code is mostly by John Meacham;see the
LICENSE for details. Tuomo and I have made some minor modifications.

The Ctk lexer library was written by Manuel Chakravarty.

Yi was born on October 14th, 2004
