Drafts
Work in progress — not yet published.
Writing a Programmers Editor (Reflections & Lessons) - Part 12
Looking back at the series — what we learned, what worked, and answering the questions from Part 1.
Writing a Programmers Editor (Modes & Extensibility) - Part 11
The extensibility layer — major modes, minor modes, hooks, and giving the user 100% power.
Writing a Programmers Editor (Undo/Redo & Command Log) - Part 10
Building undo and redo — from linear history to undo trees, and the command log pattern.
Writing a Programmers Editor (Syntax Highlighting) - Part 9
Adding colour to code — tokenization, fontification, and how to build a syntax highlighting engine.
Writing a Programmers Editor (Search & Replace) - Part 8
Implementing incremental search and replace — from naive string matching to efficient algorithms.
Writing a Programmers Editor (Rendering & Redisplay) - Part 7
Efficient screen redisplay — dirty line tracking, differential rendering, and avoiding the full repaint.
Writing a Programmers Editor (Keymaps & Input Handling) - Part 6
Designing a keymap system — translating raw keystrokes into editor commands, and the foundation for modal editing.
Writing a Programmers Editor (Terminal I/O & Raw Mode) - Part 5
How to take control of the terminal — raw mode, escape sequences, and turning a teletype into an interactive display.
Writing a Programmers Editor (Lines & Display) - Part 4
Building a line management and display layer on top of the gap buffer.
Writing a Programmers Editor (Gap Buffer in Scheme) - Part 3
Implementing a gap buffer from scratch in Scheme — the core data structure for our editor.