@@ -17,73 +17,3 @@ cargo install --path helix-term
1717
1818This will install the `hx` binary to `$HOME/.cargo/bin`.
1919
20−# Notes
21−
22−- server-client architecture via gRPC, UI separate from core
23−- multi cursor based editing and slicing
24−- WASM based plugins (builtin LSP & fuzzy file finder)
25−
26−Structure similar to codemirror:
27−
28−- text (ropes)
29−- column utils, stuff like tab aware (row, col) -> char pos translation
30−- word/grapheme/code point utils and iterators
31−- state
32−- transactions
33− - changes
34− - annotations (time changed etc)
35− - state effects
36− - additional editor state as facets
37−- snapshots as an async view into current state
38−- selections { anchor (nonmoving), head (moving) from/to } -> SelectionSet with a primary
39− - cursor is just a single range selection
40−- markers
41− track a position inside text that synchronizes with edits
42−- { doc, selection, update(), splice, changes(), facets, tabSize, identUnit, lineSeparator, changeFilter/transactionFilter to modify stuff before }
43−- view (actual UI)
44−- renders via termwiz
45−- viewport(Lines) -> what's actually visible
46−- extend the view via Decorations (inline styling) or Components (UI)
47− - mark / wieget / line / replace decoration
48−- commands (transform state)
49−- movement
50−- selection extension
51−- deletion
52−- indentation
53−- keymap (maps keys to commands)
54−- history (undo tree via immutable ropes)
55−- undoes transactions
56−- invert changes (generates a revert)
57−- (collab mode)
58−- gutter (line numbers, diagnostic marker, etc) -> ties into UI components
59−- rangeset/span -> mappable over changes (can be a marker primitive?)
60−- syntax (treesitter)
61−- indentation strategies
62−- fold
63−- selections (select mode/multiselect)
64−- matchbrackets
65−- closebrackets
66−- special-chars (shows dots etc for specials)
67−- panel (for UI: file pickers, search dialogs, etc)
68−- tooltip (for UI)
69−- search (regex? pcre)
70−- lint (async linters)
71−- lsp
72−- highlight (?)
73−- stream-syntax
74−- autocomplete
75−- comment (gc, etc for auto commenting)
76−- snippets
77−- terminal mode?
78−
79−- plugins can contain more commands/ui abstractions to use elsewhere
80−- languageData as presets for each language (syntax, indent, comment, etc)
81−
82−Vim stuff:
83−- motions/operators/text objects
84−- full visual mode
85−- macros
86−- jump lists
87−- marks
88−- yank/paste
89−- conceal for markdown markers, etc