- Deleting a character causes PieceTable to segfault, most likely from a bad cursor position
- Inserting a newline doesn't cause line to split
- Newlines not being written to file when saving
- Cursor offset is not correctly calculated after altering buffer contents. I.e inserting a newline into the middle of a line
- Backspace at start of line seems to fail sometimes and join only part of the line
- Cursor at end of document moving to the right causes a crash when there is no newline at the end
- Hard to replicate issue where
shiftCursorRow
indexes window lines out of bounds. Impliesself.vx.screen.cursor_row
is not updated correctly in some operation beforehand, likely to with insert/delete at the end of the buffer
- Mode system with
NORMAL
,INSERT
,VISUAL
andCOMMAND
- Piece table based buffer and window system
- Cursor in insert mode should be a line instead of a block
- Cursor in insert mode should be able to hover over newline (whether it exists or not) to remove last character (before newline if exists)
- All operations (
insert
,append
,set
&delete
) onFileBuffer
need to updatebuffer_line_range_indices
andbuffer_offset_range_indices
- Treesitter parsing for lines in buffer, using output to style line segments
- Thread pool based rendering of each language highlight with main thread rendering un-highlighted text.
- Range based delete via visual mode
- Config loading
- Configurable colour scheme
- Configurable key maps
- Query tree sitter using language highlights SCM
- Optimise language loading to generate switch at compile time
- Improve
draw()
call structuring - Cache TS queries off heap (performed by a thread pool) and render cached results. Re-cache queries when tree changes.
- Updated cached entries for only section of tree that changes