Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Here's a gap buffer in Lua. The code for inserting and deleting: https://github.com/darius/dole/blob/master/text.lua#L171 (The representation is documented at the start of the file. Some of the code in this function is only for assertions.)

The part that moves the gap is https://github.com/darius/dole/blob/master/text.lua#L178 and it's just a memmove. There's nothing like the permutation algorithm Bentley wrote about, his rotating by double reversal. If I'm missing your point, I'm sorry this is so troublesome -- maybe it's not worth the bother of correcting me.

(Added: I wrote the above before your edit. I hope this helps; probably there are better sources to read, but I picked this one because I wrote it.)



Yeah, apologies for the edits. I meant to hold on the thought some last time.

And it is absolutely no bother. Thanks for discussing it! Again, I would never dream of this as an interview thing. Fun discussion, though.

Some day I may dive into a text editor. Many of the data structures that are supposedly used there don't leap to me as obvious wins nowadays. They often pass the"appealing argument" test, but I have grown very weary of that.


I hope you do! There are bound to be new things to discover.

I had some fun with my editor, but if I try again I'll stay away from the tty, or anyway look for a better cross-platform tty library first.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: