37 lines
1.2 KiB
Org Mode
37 lines
1.2 KiB
Org Mode
* Keymapping system
|
|
** X11 Window Manager
|
|
- Run launcher
|
|
- Basic Window Management
|
|
- Buffer-or-x11win
|
|
** If only it had a good text editor...
|
|
- SDL2
|
|
** IMTUI Lib
|
|
- Autolayout system
|
|
** Custom Language VM
|
|
- LSP
|
|
- Treesitter
|
|
- Coroutines with the event loop
|
|
** Keymap System
|
|
*** Keymap Stacking
|
|
There shouldn't be modes, there would be keymaps and a stack. Insert mode would
|
|
be at the bottom of the stack. Adding a new mode means pushing onto the stack,
|
|
and when a keybinding event is raised, you iterate over the stack from top to
|
|
bottom to find the correct keybinding. The vim nomenclature wouldn't work in
|
|
this case as you don't "leave insert mode". Rather, you pop the "normal mode"
|
|
keymap ontop of the "insert mode" keymap.
|
|
*** Passthrough/Blocking
|
|
The keymap object should have additional settings that dictate its behavior when
|
|
a key is found and not found.
|
|
**** Found
|
|
***** Pop
|
|
The default could be to pop from the stack.
|
|
***** Keep
|
|
Keep the keymap on the stack. This is useful for both normal mode and transient
|
|
like modes where you need to explicitly pop it from the stack.
|
|
**** Not found
|
|
***** Passthrough
|
|
Allow the loop to go to the next keymap
|
|
***** Block
|
|
Ignore missing key, don't pop the keymap, maybe report an error
|
|
|