aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorBlaž Hrastnik2020-10-05 07:12:55 +0000
committerBlaž Hrastnik2020-10-13 14:13:56 +0000
commit0926904d4c7f8851d53adfad337bac59ac8f8fb4 (patch)
tree0ba603b093504c1dc182e8101e651fc5dccf5605 /README.md
parent04b15466347f3ae25125be081a159511ccbae670 (diff)
Update README.
Diffstat (limited to 'README.md')
-rw-r--r--README.md99
1 files changed, 49 insertions, 50 deletions
diff --git a/README.md b/README.md
index 3a0ac317..5d963d0f 100644
--- a/README.md
+++ b/README.md
@@ -7,18 +7,28 @@
| 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 @@ state
- 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
-
-terminal mode?
-
-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
-
+- 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)
-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