Levee, or
Captain Video!

Description

   Levee is my attempt to write a vi clone. It was originally written for
   [1]USCD Pascal I.5 on the [2]Terak 8510a, ported to USCD Pascal 4.0 on
   the [3]Sage and Pinnacle 68000-based microcomputers, ported back to
   I.5, but rewritten in P2 (a Pascal derivative language I wrote in 1983
   or thereabouts), rewritten in Pascal for an MP/M box, then my friend
   John Tainter and I re-re-rewrote it in C so we could run it on our
   newly-purchased [4]Atari 520STs in 1985, and then I re-re-re-rewrote it
   for FlexOS when I was working at CPT in (yuck!) Eden Prairie, MN.

   When Atari began to roll belly-up, we both abandoned that platform for
   PCs and re-re-re-re-etc-wrote it for MS-DOS, and when I started using
   [5]Linux in 1992 I rewrote it AGAIN, and after a few years where I
   didn’t use it because of the existance of nvi (and Caldera releasing vi
   as open source) I started using it and maintaining it again.

Source Code

     * [6]4.0 is, after approximately 30 years, a new major release, with
       a few bug fixes, a few feature enhancements, and a pretty major
       reworking to make the code more portable.
       bug fixes:
         1. fix a 39 year old bug where changing the last line in a file
            wouldn’t refresh properly.
         2. fix a newer bug where if a file wasn’t newline terminated a
            random garbage byte would be added to it when written out
         3. (not a bug, but annoying) I’d accepted a patch that mapped ‘g’
            to ‘1G’, which has the annoying side-effect of making the
            previously-unused key right next to `h' into a fumblefinger
            that was regularly making me leap away from what I was working
            on, so I backed this right on out.
       feature enhancements:
         1. Properly implement the ‘#’ & ‘%’ expansions in ex-mode file
            lists.
         2. Implement “ as an ex-mode command (comment, mainly for ctags
            variants that use ” to separate out extended positioning
            data.)
         3. Implement the :tag (ex-mode) & ^] (visual mode) commands, plus
            an tagstack that can be backed down.
       In addition, I went on a pretty extensive code shuffling spree to
       move all of the OS-dependent code out of the main source and into a
       collection of OS-dependency modules, and then turned around and
       reported Levee to Windows 10 (via the Win32 interface) and OS/2.
     * [7]3.5b adds compatability with the creeping bloatware that is C on
       OSX 10.10 – apparently getline() and getcontext() have suddenly
       become part of the thrice-damned standard library, so my getline()
       and getcontext(), which have been compiling without complaint for
       over 20 years now, suddenly conflict with the clown car of chaos
       that is the standard of the week.
       This wasn’t something I discovered; Peter Aronoff tried to compile
       levee on a 10.10 machine and had the C compile throw a tantrum on
       him (the copy of levee I use was compiled on a 10.5 machine and has
       been working without complaint since then), so he patched the bug,
       added a new feature (g maps to 1G for symmetry with G taking you to
       the end of the file), and did some editing on the documentation.
       And then I went in and updated my email address (I am never going
       to move back to Chicago, so staying in the chi.il.us
       pseudo-top-level domain is kind of silly) and it’s now version
       3.5b.
       Enjoy the minimal changes and wait for OSX 10.11 to make more of my
       functional space magically reserved.
     * [8]3.5a had to be released because I was bitten by the double curse
       of Xcode becoming more gnu out from under me and modern commercial
       Linuxes becoming, if possible, even more gnu than they were before.
       On top of these configuration changes, I’ve also added another new
       feature in the form of “0” as a movement command like you’ll find
       in the other, higher priced, versions of vi.
     * [9]3.5 has, after a gap of about 15 years, a new feature in the
       form of the “!” command in visual mode. Other than that, there are
       no changes from 3.4p.
     * [10]3.4p has been reworked so that it can be configured with
       [11]configure.sh, and has the additional minor feature that it
       better supports consoles and gui windows that come in different
       sizes. This is the first new-feature-release in quite some time (I
       believe the last feature went into levee sometime prior to 1998).
       This release is thanks to Felipe Augusto van de Wiel, from the
       [12]Debian Linux project, who sent me mail on 15-Jun-2007 asking if
       I’d be willing to accept some patches and roll levee up to a new
       release so that Debian wouldn’t be carrying around a decade’s worth
       of differences from the baseline. I’ve not gotten his patches yet
       (version 3.4q will no doubt follow 3.4p in quick succession,) but
       after he sent me the mail I got the whim to build levee on a
       freeBSD box. That didn’t work (and it didn’t work in a fairly
       spectacular fashion,) so I spent 5 hours replacing the old “here
       are a dozen or so settings you have to set by hand” arrangement
       with one that [13]doesn’t involve getting a Masters degree in Levee
       coding. It’s uncertain whether configure.sh will get along with
       dos, the atari.st, rmx, or flexos (signs say “no”), but you should
       be able to run configure.sh on a Unix machine, then export the
       configured code to your dos/atari/rmx/flexos box and build it
       there.
     * [14]3.4o has no features that haven’t been in levee since the late
       1980s, but it compiles cleanly with cc -Wall (for values of cc
       which translate to gcc 2.7.2 – I don’t officially support any newer
       versions of that thrice-damned compiler – or, maybe, pcc,) which is
       important, I guess.

     And, just in case you’re wondering, no, I never watched the
     [15]Captain Video TV show when I was young – I don’t even think I
     was even aware of the name except as a silly name until just
     recently – I just liked the funny juxtiposition of names.

     * [16]home
     * [17]sitemap
     * [18]colophon
     * [19]/~orc/Code/levee/index.text
       Tue Jun 16 23:14:57 PDT 2015

References

   1. http://en.wikipedia.org/wiki/UCSD_Pascal
   2. http://en.wikipedia.org/wiki/Terak_8510/a
   3. https://en.wikipedia.org/wiki/SAGE_Computer_Technology
   4. http://en.wikipedia.org/wiki/Atari_ST
   5. http://www.kernel.org/
   6. http://www.pell.portland.or.us/~orc/Code/levee/levee-4.0.tar.bz2
   7. http://www.pell.portland.or.us/~orc/Code/levee/levee-3.5b.tar.bz2
   8. http://www.pell.portland.or.us/~orc/Code/levee/levee-3.5a.tar.gz
   9. http://www.pell.portland.or.us/~orc/Code/levee/levee-3.5.tar.gz
  10. http://www.pell.portland.or.us/~orc/Code/levee/levee-3.4p.tar.gz
  11. http://www.pell.portland.or.us/~orc/Code/configure
  12. http://www.debian.org/
  13. http://www.pell.portland.or.us/~orc/Code/configure
  14. http://www.pell.portland.or.us/~orc/Code/levee/levee-3.4o.tar.gz
  15. https://en.wikipedia.org/wiki/Captain_Video_and_His_Video_Rangers
  16. http://www.pell.portland.or.us/~orc/
  17. http://www.pell.portland.or.us/~orc/sitemap.html
  18. http://www.pell.portland.or.us/~orc/ingredients.html
  19. http://www.pell.portland.or.us/~orc/Code/levee/index.text