diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 70 |
1 files changed, 0 insertions, 70 deletions
@@ -17,73 +17,3 @@ cargo install --path helix-term This will install the `hx` binary to `$HOME/.cargo/bin`. -# Notes - -- server-client architecture via gRPC, UI separate from core -- multi cursor based editing and slicing -- WASM based plugins (builtin LSP & fuzzy file finder) - -Structure similar to codemirror: - -- text (ropes) -- column utils, stuff like tab aware (row, col) -> char pos translation -- word/grapheme/code point utils and iterators -- state -- transactions - - changes - - annotations (time changed etc) - - state effects - - additional editor state as facets -- snapshots as an async view into current state -- selections { anchor (nonmoving), head (moving) from/to } -> SelectionSet with a primary - - cursor is just a single range selection -- markers - track a position inside text that synchronizes with edits -- { doc, selection, update(), splice, changes(), facets, tabSize, identUnit, lineSeparator, changeFilter/transactionFilter to modify stuff before } -- view (actual UI) -- renders via termwiz -- viewport(Lines) -> what's actually visible -- extend the view via Decorations (inline styling) or Components (UI) - - mark / wieget / line / replace decoration -- commands (transform state) -- movement -- selection extension -- deletion -- indentation -- keymap (maps keys to commands) -- history (undo tree via immutable ropes) -- undoes transactions -- invert changes (generates a revert) -- (collab mode) -- gutter (line numbers, diagnostic marker, etc) -> ties into UI components -- rangeset/span -> mappable over changes (can be a marker primitive?) -- syntax (treesitter) -- indentation strategies -- fold -- selections (select mode/multiselect) -- matchbrackets -- closebrackets -- special-chars (shows dots etc for specials) -- panel (for UI: file pickers, search dialogs, etc) -- tooltip (for UI) -- search (regex? pcre) -- lint (async linters) -- lsp -- highlight (?) -- stream-syntax -- autocomplete -- comment (gc, etc for auto commenting) -- snippets -- terminal mode? - -- plugins can contain more commands/ui abstractions to use elsewhere -- languageData as presets for each language (syntax, indent, comment, etc) - -Vim stuff: -- motions/operators/text objects -- full visual mode -- macros -- jump lists -- marks -- yank/paste -- conceal for markdown markers, etc |