Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'docs/architecture.md')
| -rw-r--r-- | docs/architecture.md | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/docs/architecture.md b/docs/architecture.md index eb6f0c4b..74f973b0 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,16 +1,13 @@ -| Crate | Description | -| ----------- | ----------- | -| helix-stdx | Extensions to the standard library (similar to [`rust-analyzer`'s](https://github.com/rust-lang/rust-analyzer/blob/ea413f67a8f730b4211c09e103f8207c62e7dbc3/crates/stdx/Cargo.toml#L5)) | -| helix-core | Core editing primitives, functional. | -| helix-lsp | Language server client | -| helix-lsp-types | Language Server Protocol type definitions | -| helix-dap | Debug Adapter Protocol (DAP) client | -| helix-event | Primitives for defining and handling events within the editor | -| helix-loader | Functions for building, fetching, and loading external resources | -| helix-view | UI abstractions for use in backends, imperative shell. | -| helix-term | Terminal UI | -| helix-tui | TUI primitives, forked from tui-rs, inspired by Cursive | +| Crate | Description | +| ----------- | ----------- | +| helix-core | Core editing primitives, functional. | +| helix-lsp | Language server client | +| helix-dap | Debug Adapter Protocol (DAP) client | +| helix-loader | Functions for building, fetching, and loading external resources | +| helix-view | UI abstractions for use in backends, imperative shell. | +| helix-term | Terminal UI | +| helix-tui | TUI primitives, forked from tui-rs, inspired by Cursive | This document contains a high-level overview of Helix internals. @@ -35,7 +32,7 @@ represented by a `Selection`. Each `Range` in the selection consists of a moving a selection with a single range, with the head and the anchor in the same position. -Ropes are modified by constructing an OT-like `Transaction`. It represents +Ropes are modified by constructing an OT-like `Transaction`. It's represents a single coherent change to the document and can be applied to the rope. A transaction can be inverted to produce an undo. Selections and marks can be mapped over a transaction to translate to a position in the new text state after @@ -112,17 +109,3 @@ The `main` function sets up a new `Application` that runs the event loop. ## TUI / Term TODO: document Component and rendering related stuff - -## Event - -The `helix-event` crate defines primitives for defining and acting on events -within the editor. "Events" cover things like opening, changing and closing of -documents, starting and stopping of language servers and more. - -`helix-event` has tools for defining events and registering _hooks_ which run -any time an event is emitted. `helix-event` also provides `AsyncHook` - a tool -for running cancellable tasks which run after events with _debouncing_. - -See the `AsyncHook` type for more information. Events can be created within the -`events!` macro. Synchronous hooks can be created with `register_hook!`. And -editor-wide events can be sent to hooks with `helix_event::dispatch`. |