runtime: implement an extensible line editor

the line editor supports custom keybinds and data storage, allowing for
a wide range of functionality to be implemented via plugins.

included plugins include:
* core: basic input and cursor movement.
* history: input history storage and retrieval (unfinished)
* highlight: support for colour-highlighting the line buffer (unfinished)
* syntax: parses the line buffer and uses `highlight` to apply syntax highlighting (unfinished).
* shell-integration:
  - allows a `prompt` function to be defined, which will be called to get the text to
    be used for the prompt
  - exposes key properties of the line editor to the shell environment, allowing line editor
    functionality to be extended via shell scripts.
This commit is contained in:
2026-06-20 15:13:34 +01:00
parent f622c2eba3
commit ad8b284869
21 changed files with 1857 additions and 1 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
set(source_dirs
ast compile parse parse/lex parse/syntax
format runtime command)
format runtime command line-editor)
file(GLOB sources
*.c