Skip to content

Latest commit

 

History

History
33 lines (27 loc) · 1.9 KB

TODO.md

File metadata and controls

33 lines (27 loc) · 1.9 KB

TODO

Fix

  • 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. Implies self.vx.screen.cursor_row is not updated correctly in some operation beforehand, likely to with insert/delete at the end of the buffer

Implement

  • Mode system with NORMAL, INSERT, VISUAL and COMMAND
  • 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) on FileBuffer need to update buffer_line_range_indices and buffer_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

Refactor

  • 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