Writing a Programmers Editor (Syntax Highlighting) - Part 9
Draft — not yet published.
In Part 8 we will have search working. Now it is time to make the code readable. Syntax highlighting — colouring keywords, strings, comments, and numbers differently — is what turns a wall of monospace text into something the brain can parse at a glance.
This part covers:
- Lexical tokenization: splitting text into tokens (keyword, identifier, string, etc.).
- Fontification: mapping token types to faces (colour, bold, italic).
- Emacs'
font-locksystem: how it uses regular expressions and priority levels. - VS Code's TextMate grammar approach: scoped, nested highlighting.
- Incremental highlighting: only re-fontifying changed lines.
- Implementing a simple tokenizer and highlighter for Scheme source code — in Scheme.
There is something deeply satisfying about writing a Scheme syntax highlighter in Scheme. It is the editor highlighting its own source code.
Watchout for this assay when it is published, till then.
Shorel'aran
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.
- 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 Here 2018-09-29
- 10 Writing a Programmers Editor (Undo/Redo & Command Log) - Part 10 Draft 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
Responses