Expand description
A Notion-style block editor for gpui, over the markdown document model.
ⓘ
editor::init(cx); // once, at startup
let editor = cx.new(|cx| editor::Editor::new("# Title", cx));markdown holds the document, its markdown wire form, and the painting —
all of it testable without a window. What lives here is the half that needs
one: focus, keys, the platform input handler, the mouse, undo, and the menus.
Modules§
- keys
- The keymap: every action the editor answers to, and the chords bound to it.
Structs§
- Anchor
- A comment’s range in the document, and which wash it paints.
- Chrome
- Which of the editor’s own affordances are on.
- Comment
Id - The app’s key for a thread. Opaque — nothing here looks inside one.
- Editor
- Formatting
- What a toolbar reads to light itself, in one call.
- History
- Image
Store - Who owns the pictures a document points at.
- Layout
- What the editor lays the document out with.
- Step
- The state a step restores, which is a whole moment rather than a diff.
- Text
Size - How far the chords move a document, in points — the unit a settings field is written in, so the two never need converting between.
Enums§
- Edit
Kind - What an edit did, so a run of the same kind can coalesce into one step instead of giving the document back a character at a time.
- Editor
Event - What the editor tells its host about.
- Mode
- Which form the document is being edited in.
- Source
- A picture with no address of its own, and what the app is asked about.
Constants§
- CONTEXT
- DEFAULT_
UNDO_ LIMIT - How many steps a document keeps.
Functions§
- adjust_
text_ size - Move every open document by
points, each staying inside the range against its own base. - init
- Install the editor’s key bindings —
bindings, bound. - reset_
text_ size - Give every document back to the size its app set it at.
- set_
image_ store editor::set_image_store(cx, my_store)— call once at boot. Without it a screenshot cannot be pasted at all: there is nowhere to put the bytes, and a document holds a URL.- set_
layout editor::set_layout(cx, my_layout)— call once at boot.- set_
text_ size editor::set_text_size(cx, my_steps)— call once at boot.- text_
size_ adjustment - What every document is currently set away from its base by, in points.
- turns
- Every block a block can be turned into, and what each is called — the
vocabulary the slash menu and the block menu both offer, for an app building
a menu of its own. Pair with
Editor::set_block, which is what both of bezel’s own menus call.