mirror of
https://github.com/olehomelchenko/astrolabe.git
synced 2026-08-08 02:02:33 +00:00
Editor: cursor-scoped Add view and reorder for composition views
This commit is contained in:
@@ -296,7 +296,9 @@ thin app-layer services.
|
||||
cursor's ancestor chain (`derivedFieldNamesAtPath`).
|
||||
- `spec-inline-data` — the rows a specific `data` binding carries for profiling
|
||||
(`rowsForDataBinding`: inline `values`, or a self-defined `datasets` entry).
|
||||
- `spec-insert` — composition arrays + appending a view to one.
|
||||
- `spec-insert` — the composition the cursor is in (`compositionTargetAt`), inserting a view
|
||||
at an index (`insertView`) and reordering siblings (`moveView`), plus `elementOffset` to
|
||||
re-find a view after the edit.
|
||||
|
||||
**Services (app, store-aware via `getState`):** `spec-transform-actions` (the
|
||||
wrap/simplify/add-view operations and their surfaces), `spec-dataset-hints` (completion,
|
||||
@@ -318,6 +320,17 @@ Decision rules:
|
||||
- **One edit path.** The lightbulb returns a `WorkspaceEdit` (no editor handle); the toolbar
|
||||
and palette use `executeEdits`. Both build the replacement through the same
|
||||
serialize-and-reindent step, bracketed by `pushUndoStop`, so ⌘Z restores the prior text.
|
||||
- **Composition CodeLens is cursor-scoped.** It follows the view the cursor sits in —
|
||||
`+ Add view above/below` at the view's edges and `↑/↓ Move` to reorder among its siblings —
|
||||
rather than one fixed button per composition array; an empty composition shows a single `+ Add view`,
|
||||
and the F1 palette mirrors all four for the keyboard. The provider reads `editor.getPosition()`
|
||||
and refreshes via an `onDidChange` emitter fired on cursor moves (keyed to the enclosing view,
|
||||
so typing inside one view doesn't churn the lenses). After an edit the cursor follows the
|
||||
affected view (`elementOffset`), so a repeated click keeps acting on it instead of the
|
||||
neighbour that slid into place. Cursor-scoping does not strand a load-bearing action
|
||||
([arch 10](10-interaction-and-feedback.md) — revealed actions): editing a composition puts
|
||||
the cursor in a view exactly when add/reorder is wanted, and the palette is the ever-present
|
||||
path for the keyboard.
|
||||
- **Field source for hints (view-scoped).** `dataInfoAt(text, offset)` resolves the data
|
||||
binding of the cursor's **nearest enclosing view** (`dataBindingAtPath` — a child inherits a
|
||||
parent's data unless it declares its own), then its columns: a named **library dataset**
|
||||
|
||||
Reference in New Issue
Block a user