On Sat, 13 Sep 2014 16:01:15 +0200
Marc André Tanner <m...@brain-dump.org> wrote:

Hey Marc,

> TLDR: I'm writing an experimental but (hopefully) highly efficient vim
> like text editor based on a piece chain data structure. You will find 
> an url to a git repository at the end of this rather long mail.

your mail made my day! I've read your concept and am delighted by how well
thought-out it is. The piece table is a good approach, which has also been
verified by Charles Crowley in "Data Structures for Text Sequences".

> This should be accomplished by a reasonable amount of clean (your mileage
> may vary), modern and legacy free C code. Certainly not an old, 500'000 
> lines[1] long, #ifdef cluttered mess which tries to run on all broken 
> systems ever envisioned by mankind.

I know _exactly_ what you mean and you are perfectly right. I couldn't wait
for an alternative to vim to show up and intentionally didn't "study" vim
too thoroughly.

I have got one question though: When you are talking about Unicode-awareness,
are you talking about UTF-8 or more complex sets?

> It is possible to open multiple windows via the :split/:vsplit/:open 
> commands or by passing multiple files on the command line.
> 
> In principle it would be nice to follow a similar client/server approach
> as sam/samterm i.e. having the main editor as a server and each window 
> as a separate client process with communication over a unix domain socket. 
> 
> That way window management would be taken care of by dwm or dvtm and the 
> different client processes would still share common cut/paste registers
> etc.
> 
> However at the moment I don't want to open that can of worms and instead 
> settled for a single process architecture.

Going with named pipes or sockets would be the better approach.

>   Stuff which vim does which I don't use and have no plans to add:
> 
>    - GUIs (neither x11, motif, gtk, win32 ...)
>    - text folding
>    - visual block mode 
>    - plugins (certainly not vimscript, if anything it should be lua based)
>    - runtime key bindings
>    - right-to-left text
>    - tabs (as in multiple workspaces)
>    - ex mode
>    - macro recording

I agree with all of them. Many "features" in vim evolved simply from the fact
that programming languages like C++ and Java require whole IDE's to be
written (especially the class-like-structure is a curse).
For the other stuff, there should be ways to do it outside the editor.

> At this point it might be best to fetch the code, edit some scratch file,
> notice an odd behavior or missing functionality, write and submit a patch
> for it, then iterate.

Playing around with it I noticed that "dd" doesn't work in the last line
and sometimes mixes up things.
Write a document with "ee"'s in each line. Then do a dd. The last line
won't get deleted and sometimes, a line is removed, but leaves a single "e"
as a trace.
I may send you a patch in the next few days using the great arg.h by
Christoph whenever possible. I also noticed some smaller warnings while
compiling, which should be trivial to fix.

All in all, great work on this piece of software! I see you spent a lot
of time designing and writing the well-commented code.

Cheers

FRIGN

-- 
FRIGN <d...@frign.de>

Reply via email to