CHOOSE 0.1%

C core,
everything else Lua.

cdin is a small, fast, keyboard-driven text editor with vim-style modal editing on by default. The core is written in C; everything else is Lua you can actually read, change, and recompile-free.

bg-pattern
01

Modal editing built in and on by default. Vim-style Normal / Insert / Visual modes work out of the box.

02

The codebase is meant to be readable. You should be able to find the edit loop, understand what it does, and change it. Functions are short. Modules are small. There are no clever abstractions that require you to know the whole project before touching any of it.

03

Features belong in plugins. The core does the minimum that every editor needs. Anything optional is in data/plugins/ where it can be read, copied, modified, or replaced without touching the core. This is how lite-xl approaches things too, and it works.

04

Startup time and memory use matter. The renderer only redraws what actually changed. Background tasks are coroutines, not threads. An idle cdin draws almost nothing and uses almost no CPU.

05

Everything is Lua — commands, keybindings, UI behavior, syntax highlighting — all plain Lua loaded from data/ at startup. No recompiling required.

06

Configurable through data/user/init.lua — plain Lua, no DSL. Change themes, keybindings, or any behavior you can imagine.

cdinisforpeoplewhowantasmall,fasteditortheycanactuallymaketheirown.Ifyou'veusedvim,thebasicstransferdirectly.Ifyou'recurioushowaneditorworks,thewholethingisreadableandmodifiable.Ifyoujustwantaquick,quiettooltoopenfilesandgetoutoftheway,thatworkstoo.