[slim-vim] What have I been up to lately?

Brad Beveridge brad.beveridge at gmail.com
Thu Oct 19 10:48:32 CDT 2006


Hi guys, this list has been pretty quiet lately - I thought that I'd
let you all know what I'd been doing.
They say that you're not a real programmer until you've written your
own editor :)
So I've been writing a Vi-like editor in Common Lisp.  Actually it is
being inspired largely from Vim rather than Vi, but the Vi style modal
interface is the important part.
It is called VIAL - VI Adopts Lisp.  So far the output device is
Ncurses, though I plan a port to PDCurses at some stage.  The code
should be portable, but SBCL on Intel OS X is what I develop and test
on.

Right now I am at the stage where VIAL can edit it's own code and it's
not too painful.  My next main set of features is integrating
Slime-vim.  Just to be very clear, Vial is never going to be a Vim
replacement.  Vial is really only designed to edit Lisp code and
integrate with Slime, editing other file types is not really a design
goal.

I am posting to this list only, as kind of a "sneak peak"
announcement, please don't post it more widely because I am not ready
for the first release.  However, if you are interested in helping me
work on Vial, please let me know - there is plenty of work to do!  The
code is not complex, so you do not need to be a Lisp guru (I'm not!)
to help out.  Ideally I would like one or two more developers who can
dedicate regular time - not even very much time - but regular and for
at least a few months.  If you'd like to help, let me know.  I will be
making an early beta release to this list when Slime support is
integrated and I feel that Vial is a usable development environment.
At that stage I will have Vial hosted on commonlisp.net.

Here are the basic features:

Features
  - Small, only ~2800 lines right now (not including the CFFI
interface to Ncurses)
  - IO layer in Ncurses
 - Written in portable Common Lisp
 - Built in undo/redo functionality
 - Regression test suit (well, the beginnings of one)
  - Single threaded (if it becomes multi, it will be Erlang style
message passing)
 - Simple conceptual model
 - Easy to add Vim commands
  - Regex searching

Anti-features
 - Slow, no optimisation so the code ought to be pretty clear
  - IO layer in Ncurses :)
 - Single threaded
 - Very few Vim commands are implemented
 - Primitive rendering (single window)
  - Requires ASDF for CFFI, but VIAL itself is not yet working with ASDF

Planned Features
** Planned features are things I've thought a little about, and have
tried to pick design
   decisions that will allow the feature without too much code rewriting **
  - Lisp portability, at least SBCL and ECL
  - Port to PDCurses and Win32 binary via ECL
 - Networking
 - Slim-vim integration
  - Lisp REPL
 - Multiple windows (done)

Known bugs
 - some improper key handling, like backspace while in insert mode
(fixed backspace)
 - cursor doesn't remember col position when moving over lines
 - cursor can be show too far to the right of where it ought to be
 - changing a line that has a search highlight doesn't move the highlight

Dependencies:
  ASDF     (http://www.cliki.net/asdf)
  CFFI     (http://common-lisp.net/project/cffi/)
 CL-FAD   (http://weitz.de/cl-fad/)
 Trees    (http://www.cliki.net/TREES)
  CL-PPCRE (http://weitz.de/cl-ppcre/)

And a wiki entry with some of my thoughts and notes is here:
http://bradb.nfshost.com/stuff/index.cgi/Vial

Any and all feedback is welcome.

Cheers
Brad


More information about the slim-vim mailing list