[dev] [announce] mle: a small terminal-based text editor

From: <as_AT_php.net>
Date: Wed, 29 Mar 2017 09:57:49 -0400


I am announcing mle, a small terminal-based text editor written in C:


mle weighs in at ~10k sloc, has 1 external dep[0], is configurable,
extensible / scriptable, and fast. The default setup is nano- or
emacs-like, but it supports modes as well. I've used it daily for 2+
years. You can view some demos here: http://imgur.com/a/ZBmmQ

### Aims

* Keep codebase small
* Require minimal dependencies
* Make extensibile and configurable
* Favor simplicity over portability
* Use shell commands to enhance functionality (e.g., grep, tree)
* Enjoy writing C
* Annoy the world with another text editor

### Features

* Small codebase (~10k sloc)
* Only 1 out-of-repo dependency (pcre)
* Full UTF-8 support
* Syntax highlighting (via pcre)
* Stackable key maps (modes)
* Extensible via any program capable of stdio
* Scriptable rc file
* Built-in text editing language (lel)
* Key macros
* Multiple splittable windows
* Regex search and replace (with capture groups)
* Large file support (beats vim in this benchmark
* Incremental search
* Linear undo and redo
* Multiple cursors
* Headless mode
* Movement via less
* Fuzzy file search via fzf
* File browsing via tree
* File grep via grep
* Decently portable (tested on Linux, cygwin, macOS)

### Notes

* There is a TODO list here[1].
* The editor back-end, mlbuf[2], is a standalone library which can be
* mlbuf's main data structure is a linked list of C strings, similar to nano.
* The built-in editing language, lel, is an experiment. I question
whether it belongs.
* There is a fork of mle called eon[3] which adds mouse support, Lua
plugins, and notepad-like defaults.

As always, patches and feedback are welcome.


[0] pcre; termbox and uthash are included in-repo
[1] https://github.com/adsr/mle/blob/1e9a467/mle.h#L637
[2] https://github.com/adsr/mlbuf
[3] https://github.com/tomas/eon
Received on Wed Mar 29 2017 - 15:57:49 CEST

This archive was generated by hypermail 2.3.0 : Wed Mar 29 2017 - 16:00:14 CEST