diff options
author | Blaž Hrastnik | 2021-02-09 06:39:52 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-02-09 06:40:06 +0000 |
commit | 755632f23113ccff66390de1e2c3476a51886b00 (patch) | |
tree | 8036c55aa3d4edc95f206e6f28a2b8d8d98c8800 /README.md | |
parent | 30d1b7098f023ea1cf728e6b989599de364f58ab (diff) |
deps update
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 |