On Sat, 13 Sep 2014 16:01:15 +0200 Marc André Tanner <[email protected]> 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 <[email protected]>
