I recently had some life events that gave me a bit of time to sit around at a computer (something I have not done a whole lot of lately, both out of time concern and out of lack of interest). Some time ago I followed a walkthrough on writing a text editor based on kilo by antirez. It was in C and I had fun working on it. A while after that I ported it over to go. My version was always very vim/vi inspired. So, with the time I had available I decided I wanted to be able to use my own editor for actual real work that I do. I do a lot of ebook editing. All of that work uses utf-8 text (beyond the ascii set). I finally got around to doing a ground up rewrite to support utf-8. I also added windowing; though a cheap way of doing it where only two windows are allowed (which is enough for me and a BIG improvement on the tabbed interface I had built for the prior version). I also added regex-based search and replace, line numbers (relative or standard), support for sending commands to a shell and having the response open in a new buffer, a better macro system, the ability to input regularly used utf-8 chars from insert mode (similar to vim's ^K), and a check for if a file has been modified from another process. I removed runtime configuration (having a config file) and theme support. Instead, there is a `config.go` file that can be edited at compile time to reasonable defaults. I also removed support for most filetype-based syntax highlighting. I do have code for single line comments and strings based on filetype, but they are hard coded. I do not highlight multiline comments or keywords. Instead I just do single line comments, strings, numbers, and symbols. The last category lets me easily spot code boundaries by highlighting brackets, parents, equal signs, etc. All single char stuff. I have found I do not really miss the highlighting of other things. I wrote _most_ of the editor in the editor, and have not used it to write some other stuff. The only thing I do not have is soft-wrap for long lines, a feature I dearly miss but have not worked out in my head how to accomplish quite yet. Someday maybe. Until then, horizontal scroll is not the end of the world. The editor always had undo functionality, and still does. It remains a nice thing to make a tool that you can use yourself and modify to your needs and every now and then redo it and make it better. While it is really something I imagine will only interest me, the code is here: https://tildegit.org/sloum/sled2 It uses a rune-width lib and a readline-esque lib, other than that it is just the standard library.