[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