I would like to learn how an extensible text editor is implemented. By extensible, I mean the ability to augment the functionality of the main program with code written by the users like plugins, runtime configuration files etc.

Which one would you recommend - vim, emacs or something else? There is kilo which is pretty popular for its DIY approach and I am considering that as a starting point, but my main focus is on learning how to write a software that is extendable.

I like a few things about emacs like the readability of the configuration file (just invoking plain old functions with arguments), mutating the environment itself etc. There are also some good books on emacs like The Craft of Text Editing. One drawback, however, is that elisp can be slow at times.

I like a few things about vim like the modal editing (<action> <motion>), the speed of editing etc. However, the configuration file is a bit cryptic at times because it is mostly about rebinding one set of keys to another, which I don't find really readable or intuitive (internally it could be invoking functions too but the readability is less). Also, I am not sure if there are any textbooks on vim's design?

Here is a very nice resource I found on the Internet about Text Editors: http://texteditors.org/.


See at CudaText editor, it is written in Lazarus, and has all possible extensions: python plugins, color themes, syntax lexers, etc.

List: http://wiki.freepascal.org/CudaText#Add-on_types


I would think there are several approaches to making something extensible.

Look at Atom, developed by Github. (atom.io)

  • Yes, I was thinking extensible is a general term too. But I think a hands-on experience would be nice.
    – Nishant
    Feb 25 '18 at 17:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.