mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-25 19:03:30 +04:00
Update README.
This commit is contained in:
parent
04b1546634
commit
0926904d4c
99
README.md
99
README.md
@ -7,18 +7,28 @@ # Helix
|
||||
| helix-view | UI abstractions for use in backends, imperative shell. |
|
||||
| helix-term | Terminal UI |
|
||||
|
||||
# Installation
|
||||
|
||||
```
|
||||
git clone --depth 1 --recurse-submodules -j8 https://github.com/helix-editor/helix
|
||||
cd helix
|
||||
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)
|
||||
- piece table-based tree structure for changes
|
||||
|
||||
|
||||
Structure similar to codemirror:
|
||||
|
||||
text (ropes)
|
||||
- text (ropes)
|
||||
- column utils, stuff like tab aware (row, col) -> char pos translation
|
||||
- word/grapheme/code point utils and iterators
|
||||
state
|
||||
- state
|
||||
- transactions
|
||||
- changes
|
||||
- annotations (time changed etc)
|
||||
@ -29,62 +39,51 @@ # Helix
|
||||
- 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)
|
||||
- { 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)
|
||||
- commands (transform state)
|
||||
- movement
|
||||
- selection extension
|
||||
- deletion
|
||||
- indentation
|
||||
keymap (maps keys to commands)
|
||||
history (undo tree via immutable ropes)
|
||||
- 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)
|
||||
- (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
|
||||
- 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?
|
||||
|
||||
terminal mode?
|
||||
- plugins can contain more commands/ui abstractions to use elsewhere
|
||||
- languageData as presets for each language (syntax, indent, comment, etc)
|
||||
|
||||
plugins can contain more commands/ui abstractions to use elsewhere
|
||||
|
||||
languageData as presets for each language (syntax, indent, comment, etc)
|
||||
|
||||
TODO: determine rust vs script portions
|
||||
|
||||
vim stuff:
|
||||
motions/operators/text objects
|
||||
full visual mode
|
||||
macros
|
||||
jump lists
|
||||
marks
|
||||
yank/paste
|
||||
conceal for markdown markers, etc
|
||||
|
||||
|
||||
---
|
||||
|
||||
codemirror uses offsets exclusively with Line being computed when necessary
|
||||
(with start/end extents)
|
||||
lines are temporarily cached in a lineCache
|
||||
Vim stuff:
|
||||
- motions/operators/text objects
|
||||
- full visual mode
|
||||
- macros
|
||||
- jump lists
|
||||
- marks
|
||||
- yank/paste
|
||||
- conceal for markdown markers, etc
|
||||
|
Loading…
Reference in New Issue
Block a user