in reply to RE: VI in Perl
in thread VI in Perl

It will hopefully be extensible... right now

:s/foo/bar/g

is implemented internally using eval(). There is also a way to specify perl code from command line, i.e.:

:.,+10 {$_=reverse}

to reverse 11 lines.

This project of mine is far from complete, and the code is messy and unoptimized. However I hope that it will be a good learning experience (it already has), and maybe in a couple of weeks I will use vip to develop vip. :)

Next big things on my list are recovery and a cache to optimize the linked list access (right now it is pretty slow, look for /_get_reference_to_number/ in v_list.

- Dmitri.

Replies are listed 'Best First'.
RE: VI in Perl
by Dominus (Parson) on Nov 16, 2000 at 02:19 UTC
    When I was looking through the code, I found myself wondering why you had used linked lists at all, instead of Perl arrays. Wouldn't that have been faster and simpler?

      Good point.

      However, I think that when the cache is implemented, and I type '250dd' in the middle of a 3000-line file, linked list will not be much slower than splice(), or maybe even faster (or maybe I am just fooling myself).

      I think the implementation is such because back when I was contemplating this program, back in July, I was convinced by some people and some programming literature that all editors are written using linked lists. I did not want to swim against the stream. We'll see how it pans out, I guess, I can always rewrite v_list using arrays.

      Thank God for OO! :)

      - Dmitri.

        Dominus was right on both counts. Arrays are faster and simpler. I re-implemented vip using arrays and it works like a charm. This also reduced my code by about 300 lines.
      Having trouble getting the dimitri's web site. Anybody know where I could get a copy of vip, his VI editor written in perl. Thanks. I have been working on one using Perl/Tk to insert in some perl programs I have that need an editor. Has any one ever tried using Vim form perl. I have used the Win32::OLE to interface. vim has a VisVim.dll for use with Visual Studio. I'm not a C programmer, so I havent tried to get Perl to call VisVim. Anybody got any ideas? Thanks Mike W.