┏━━━━━━━━━━━━━━━┓
┃ r3bl_rs_utils ┃
┛ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
editor engine extras (auto-completion providers):
☐ add support for auto completion providers
☐ modal dialogs for autocompletion provider, which just use a nested multiline editor component
☐ implement auto completion provider for file paths
☐ implement auto completion provider for github issues (store creds in env vars)
editor engine extras (search & replace):
☐ search & replace
☐ text selection & highlighting:
☐ add support for text selection highlighting
☐ selection, copy, paste
editor engine extras (smart MD editing support like github web app):
☐ handle automatically propagating ordered `1. ` & unordered list `- ` like MD editor on github
☐ handle automatically propagating `- [ ]` and `- [x]` like MD editor on github
tui components (all implemented w/ editor component):
☐ checkbox (single, multi select) implemented w/ editor component (different config options)
☐ form implemented w/ editor component (different config options)
framework (configurable keyboard shortcuts):
☐ a json file w/ keybindings needs to be loaded / stored from `~/.config/r3bl/keybindings.json`
- https://crates.io/crates/config
☐ there should be defaults provided if the file doesn't exist
☐ the keybindings should be configurable via the UI (using an editor component)
☐ each keybinding is made up of a keyboard shortcut sequence and an "action name"
☐ the action name is a string that maps to a function
☐ each component or app that deals w/ input events should convert the event into an action
☐ all action names go into a global "action registry" along w/ the shortcuts that trigger them
framework (jarvis mode):
☐ w/ shortcuts & autocomplete, impl modal to allow user to type a command and have it executed
☐ list of available commands come from the global "action registry" w/ its triggering shortcut
framework (save/load buffer to/from file/db):
☐ learn surrealdb
- https://ori-cohen.medium.com/list/surrealdb-deep-dive-ddefbefaf1ef
☐ learn terminusdb
- https://terminusdb.com/blog/terminusdb-internals/
☐ keyboard shortcut to save/load buffer
☐ persist buffer to file
☐ load buffer to file
☐ persist buffer to surrealdb
☐ load buffer to surrealdb
framework:
☐ animation
- https://github.com/SergioBenitez/Rocket/discussions/1735#discussioncomment-941576
- https://notado.substack.com/p/do-you-really-need-a-message-queue?sd=pf
- https://github.com/smallnest/concurrency-programming-via-rust
☐ [Filter unsupported graphemes in keypress](https://github.com/r3bl-org/r3bl_rs_utils/issues/26)
testing:
☐ Write integration test w/ input simulation using [enigo](https://github.com/enigo-rs/enigo)
- eg: https://github.com/enigo-rs/enigo/blob/master/examples/keyboard.rs
☐ [Write tests: rendering, component, etc](https://github.com/r3bl-org/r3bl_rs_utils/issues?q=is%3Aissue+is%3Aopen+label%3Atesting)
cmdr:
☐ [Create PRD](https://github.com/r3bl-org/r3bl_rs_utils/issues/39)
writing:
☐ [RSX & DSL articles](https://github.com/r3bl-org/r3bl_rs_utils/issues/19)
☐ [Update DD for editor component](https://github.com/r3bl-org/r3bl_rs_utils/issues/23)
☐ [Write DD for render pipeline & paint](https://github.com/r3bl-org/r3bl_rs_utils/issues/37)
☐ [Write DD for tui module](https://github.com/r3bl-org/r3bl_rs_utils/issues/41)
☐ [Write coding pattern article on OOP -> Rust](https://gist.github.com/nazmulidris/f975795b98bc4573d6a0fb1e9bcca090#no-oop-in-rust)
performance:
☐ [Add termion support](https://github.com/r3bl-org/r3bl_rs_utils/issues/24)
multi user editor:
☐ editor engine enhancements (multi-user editing):
- add support for multiple carets & network service providers to move them
vscode ext:
☐ write vscode ext to help w/ parsing RSX
- eg: https://github.com/TechTheAwesome/code-yew-server