Writing a Programmers Editor (Undo/Redo & Command Log) - Part 10
Draft — not yet published.
In Part 9 we will have syntax highlighting. The editor is starting to look and feel real. But one thing is missing: the ability to take back a mistake. Every editor needs undo.
This part covers:
- Linear undo: a simple stack of operations, push on edit, pop on undo.
- The command pattern: representing each edit as a reversible object (do/undo pair).
- Grouping: why typing a word is one undo, not one per character.
- Undo trees: vim's approach — branching history where you can undo to any past state and then go in a different direction.
- Emacs' undo: the "no redo, just undo the undo" philosophy.
- Implementing a command log with undo/redo in Scheme.
Undo is the safety net. Get it wrong and users lose trust in the editor. Get it right and they will experiment freely, knowing they can always go back.
Watchout for this assay when it is published, till then.
Shorel'aran
Article Series
Writing a Programmer's Editor
A series of assays on building a programmable text editor from scratch in Scheme — exploring the balance of power between the C runtime and the scripting language, data structures, terminal I/O, and extensibility.
← Previous
Writing a Programmers Editor (Syntax Highlighting) - Part 9
10 / 12
Next →
Writing a Programmers Editor (Modes & Extensibility) - Part 11
- 1 Writing a Programmers Editor - Part 1 2018-08-06
- 2 Writing a Programmers Editor (DS/Gapbuffer) - Part 2 2018-08-11
- 3 Writing a Programmers Editor (Gap Buffer in Scheme) - Part 3 Draft 2018-08-18
- 4 Writing a Programmers Editor (Lines & Display) - Part 4 Draft 2018-08-25
- 5 Writing a Programmers Editor (Terminal I/O & Raw Mode) - Part 5 Draft 2018-09-01
- 6 Writing a Programmers Editor (Keymaps & Input Handling) - Part 6 Draft 2018-09-08
- 7 Writing a Programmers Editor (Rendering & Redisplay) - Part 7 Draft 2018-09-15
- 8 Writing a Programmers Editor (Search & Replace) - Part 8 Draft 2018-09-22
- 9 Writing a Programmers Editor (Syntax Highlighting) - Part 9 Draft 2018-09-29
- 10 Writing a Programmers Editor (Undo/Redo & Command Log) - Part 10 Here 2018-10-06
- 11 Writing a Programmers Editor (Modes & Extensibility) - Part 11 Draft 2018-10-13
- 12 Writing a Programmers Editor (Reflections & Lessons) - Part 12 Draft 2018-10-20
2 of 12 articles published
Responses