hinode-codes/MyNotes

★ 0Forks 1RustGitHub ↗Compare

README

MyNotes

An extremely lightweight and fast text editor that uses as little memory as possible.

GOALS

  • Initial prototype
    • Basic Piece Table
    • B-Tree for line indexing
    • Opening a file from a path
    • TextBuffer to hold the two together
    • Cursor with anchor and head
    • History API to undo and redo
    • Document to hold all state together as one public-facing API
    • Simple UI for opening file chooser
    • Cursor with selection in mind
    • Viewport with scrolling
    • Render opened text file onto viewport
    • Deletion of selection
    • Cursor following viewport (scrolloff) when scrolling like in NeoVim
    • line numbers
    • arrow keys to navigate texts
    • double clicking selects a word, then a line, then a paragraph.
    • Tests for core data structures
    • Tests for UI
    • Decouple reusable logic used into crates/utils
    • Decouple all IO operations in crates/io
    • Select all (Ctrl + a)
    • Save through Ctrl + s
    • Selection while scrolling
    • Saving to a file
    • Saving to an existing file (modifying it)
    • Open 1GB or very large file/s (hardest :p) without crashing and using as very low memory as possible
    • Edit 1GB or very large file/s without crashing and using as very low memory as possible

NOTES

For this current development iteration, this project only aims to handle ASCII characters.

After having a MVP, it will move on to support UTF-8/Unicode characters and tab rendering, find and replace, status bar, etc..

Then, after that, new features and improvements to UI, etc.

P.S. This is an educational side project of mine. Some codes are from AI and others are from the internet, while some are mine as I refactor and learn more of this stuff.

Contributors

tip-aaronhinode-codesCopilot

Issues