On Sun, Jan 24, 2010 at 5:22 AM, Ted Unangst <[email protected]> wrote: > So one of mg's bugs is that it's not extensible. This doesn't > normally bother me, because I use vi. But I decided to do something > about it. A full lisp like emacs would be a little crazy, given the > point is to have a small editor. But tinyscheme isn't too bad. So in > it goes.
Let me expand on this point a little more, and ignore the demo for now. mg has slowly grown a number of C implemented extensions, but that's not a scalable future. I think a real extension language is needed to *prevent* bloat. That's my justification for the feature. Picking the language used is a process of elimination. We have a couple choices, but if we're going to keep it light weight, we shouldn't burn 2k lines on a parser. So our choices are basically lisp or forth. I assert without proof that forth is the wrong choice. It probably wouldn't be hard to implement the core of a lisp interpreter myself, but I think there's some benefit for trying to keep the language used close to a standard instead of branching out on our own. And the two standards are Common Lisp (huge!) or Scheme. I don't know how much or accurately tinyscheme implements scheme, but at least at a high level all the documentation I found seems to work. I don't think we should worry too much about making mg slow. emacs is not an editor with lisp, by design it's a lisp environment that happens to start a text editor by default. I think it's obvious when you're crossing that line, and we simply don't have to. :) Now the released code is, as stated, too early to be considered a serious proposal. And the web browser extension, well, I needed to pick something that mg clearly could not do with the existing macro feature just to make sure this was the right approach. Doesn't mean we want to include it by default. vim has indeed backed itself into a corner. vimscript isn't really good enough, so there's piles and piles of C code backing it. That's what I'm trying to avoid. Anyway, I'll work on it a little more over time. I just wanted to show what I've got for interested parties. More to come.
