@@ -7,18 +7,28 @@
7| helix-view | UI abstractions for use in backends, imperative shell. |
7| helix-view | UI abstractions for use in backends, imperative shell. |
8| helix-term | Terminal UI |
8| helix-term | Terminal UI |
13+git clone --depth 1 --recurse-submodules -j8 https://github.com/helix-editor/helix
15+cargo install --path helix-term
18+This will install the `hx` binary to `$HOME/.cargo/bin`.
10- server-client architecture via gRPC, UI separate from core
22- server-client architecture via gRPC, UI separate from core
11- multi cursor based editing and slicing
23- multi cursor based editing and slicing
12- WASM based plugins (builtin LSP & fuzzy file finder)
24- WASM based plugins (builtin LSP & fuzzy file finder)
13−- piece table-based tree structure for changes
16Structure similar to codemirror:
26Structure similar to codemirror:
18−text (ropes)
28+- text (ropes)
19- column utils, stuff like tab aware (row, col) -> char pos translation
29- column utils, stuff like tab aware (row, col) -> char pos translation
20- word/grapheme/code point utils and iterators
30- word/grapheme/code point utils and iterators
22- transactions
32- transactions
24 - annotations (time changed etc)
34 - annotations (time changed etc)
@@ -29,62 +39,51 @@ state
29 - cursor is just a single range selection
39 - cursor is just a single range selection
31 track a position inside text that synchronizes with edits
41 track a position inside text that synchronizes with edits
32−{ doc, selection, update(), splice, changes(), facets, tabSize, identUnit, lineSeparator, changeFilter/transactionFilter to modify stuff before }
42+- { doc, selection, update(), splice, changes(), facets, tabSize, identUnit, lineSeparator, changeFilter/transactionFilter to modify stuff before }
33−view (actual UI)
43+- view (actual UI)
34- renders via termwiz
44- renders via termwiz
35- viewport(Lines) -> what's actually visible
45- viewport(Lines) -> what's actually visible
36- extend the view via Decorations (inline styling) or Components (UI)
46- extend the view via Decorations (inline styling) or Components (UI)
37 - mark / wieget / line / replace decoration
47 - mark / wieget / line / replace decoration
38−commands (transform state)
48+- commands (transform state)
40- selection extension
50- selection extension
42- indentation
52- indentation
43−keymap (maps keys to commands)
53+- keymap (maps keys to commands)
44−history (undo tree via immutable ropes)
54+- history (undo tree via immutable ropes)
45- undoes transactions
55- undoes transactions
46- invert changes (generates a revert)
56- invert changes (generates a revert)
47−(collab mode)
57+- (collab mode)
48−gutter (line numbers, diagnostic marker, etc) -> ties into UI components
58+- gutter (line numbers, diagnostic marker, etc) -> ties into UI components
49−rangeset/span -> mappable over changes (can be a marker primitive?)
59+- rangeset/span -> mappable over changes (can be a marker primitive?)
50−syntax (treesitter)
60+- syntax (treesitter)
51- indentation strategies
61- indentation strategies
53−selections (select mode/multiselect)
63+- selections (select mode/multiselect)
54−matchbrackets
64+- matchbrackets
55−closebrackets
65+- closebrackets
56−special-chars (shows dots etc for specials)
66+- special-chars (shows dots etc for specials)
57−panel (for UI: file pickers, search dialogs, etc)
67+- panel (for UI: file pickers, search dialogs, etc)
58−tooltip (for UI)
68+- tooltip (for UI)
59−search (regex? pcre)
69+- search (regex? pcre)
60−lint (async linters)
70+- lint (async linters)
62−highlight (?)
72+- highlight (?)
63−stream-syntax
73+- stream-syntax
64−autocomplete
74+- autocomplete
65−comment (gc, etc for auto commenting)
75+- comment (gc, etc for auto commenting)
68−terminal mode?
77+- terminal mode?
70−plugins can contain more commands/ui abstractions to use elsewhere
72−languageData as presets for each language (syntax, indent, comment, etc)
74−TODO: determine rust vs script portions
77−motions/operators/text objects
83−conceal for markdown markers, etc
86−---
79+- plugins can contain more commands/ui abstractions to use elsewhere
80+- languageData as presets for each language (syntax, indent, comment, etc)
88−codemirror uses offsets exclusively with Line being computed when necessary
82+Vim stuff:
89−(with start/end extents)
83+- motions/operators/text objects
90−lines are temporarily cached in a lineCache
84+- full visual mode
89+- conceal for markdown markers, etc