kd - kind of an editor
my attempt at an editor written in kc (github). attempts to emulate helix control scheme.

- add :o and loading files later. this requires pane and textbuf management. (opening a new file must create a new textbuf and pane)
todo
- [x] w,e,b jumping
- [x] scrolling and cursor jumping.
- [x]
I and A
- [x] x line selection
- [x] pasting whole lines (exact condition: ends in newline) does not paste them between characters.
- [x] cmd system
- [x] line numbers
- [x] jump to line number
- [x] searching + wrapping (fwd and bwd)
- [x] SELECT mode
- [x] copy-paste (at deletion + when pressed y)
- [x] indent dedent
- [x] autoindent
- [x]
o and O
- [x]
ctrl+u and ctrl+d moving around
- [x]
ctrl+c comment out
- [x] undo/redo
- [x] undo/redo typed characters as full words.
- [x]
g submenu
- [ ]
<space> submenu
- [ ] nice menu styling
- [x] themes
- [x] editor messages (send message Str -> () which allocates and frees n stuff)
- [ ] proper cursor position and
before-cursors position for commenting out, moving, oO newlines
- …
- [x] filepicker
- [x] actually load files (different buffer support todo)
- [ ] respect .gitignore and .ignore :)
- [ ] hide hidden files and allow toggle?
- [x] make it look good and style
- [x] open directories and open picker when specified a dir.
- [x] cursor scrolling and preserve cursor position (better than el helixo O_O)
- [x] actually change design of Tui, readd
resize event? or should I somehow pass dims to handle-key? (added the resize event)
- [x] unify text input controls (search, command, filepicker)
- …
- [x] syntax (keyword) highlighting
- [ ] multiline higlighting (eg. markdown code snippets)
- the way we should do this is first highlight all of it from top to bottom, then when an update happens,
redo the highlights affected by the “update” with extra first and last token. (just in case)
- …
- [ ] proper datastructure for handling text (continuous array, the new le vscode data structure, ideally non-recursive :])
- …
- [ ] nice UI and animations
- [x] UTF8 handling
- [x] multipane
- [ ] move cursor properly when same buffer is modified in other pane.
- [x] instead of hiding some parts of the interface, render inactive pane in muted colors
- looks kewl, im gonna leave it in.
- [ ] multicursor
- …
- [ ] nice themes
- [ ] cmd autocomplete
- [ ] wq (i didn’t add it on purpose. due to my muscle memory, i use it automatically, but I don’t want to overwrite important files accidentally)
- …
- [ ] tabs?
- [ ] graphical backend
- [ ] hex edit mode (this requires file type detection)
- [ ] earlier/later commands (undo 5 mins)
ideas
- cute, 60 FPS animation near or around the cursor when switching from Normal to Insert and back. (should make a special animation subsystem, which we can query if any animation is playing to check if we need to redraw)
- animations in general
- opening the editor on a file causes letters to appear from left to right in half a sec.
- background slowly fills the screen from top-left/center corner/ randomly fills in half a sec™ when the editor is opened.