split app into modules
- ui.rs: main UI event loop
- net.rs: async event loop for network io
- app.rs: core application & shell logic
(deps) add async helper crates
- smol: a very small runtime
- async_*: utility crates which allow suspension on otherwise
blocking operations. (i.e: acquiring locks, writing channels, etc.)
(ui) clean up cursor handling code
- add delete() operation
- combine cursor_left/right w/ advance/retreat
(ui) input buffer resizing logic
The input buffer consists of the line being edited as well
as the span of space available in the terminal to display the line.
This commit includes basic operations for manipulating the buffer,
including:
- The ability to move the cursor forwards & backwards within
the range of the edited text (`cursor_left` & `cursor_right`.)
- The ability to render the input buffer at a given position and
console width with automatic resizing behavior.
implement basic buffer management
- ascii keys append to a buffer
- arrows (left/right) navigate around buffer
- terminal width controls a sliding span for displaying that buffer
(init) linefeed & crossterm test