@@ -29,7 +29,7 @@ These are load-bearing and do not bend for a feature.
2929 debug adapter client are all in-tree or shell out to tools the user
3030 already has (` gopls ` , ` git ` , a DAP server).
3131
32- ## Done (v0.50 .0)
32+ ## Done (v0.51 .0)
3333
3434The editing core and most of the language-intelligence surface are in
3535place. Grouped by area, each backed by a package under
@@ -39,7 +39,9 @@ place. Grouped by area, each backed by a package under
3939 highlight, comment toggling, indent guides, code folding, find and
4040 replace, register-based clipboard.
4141- ** Buffers & layout** — tab bar, buffer manager, multibuffer, file
42- tree with file operations, fuzzy finder, picker.
42+ tree with file operations, fuzzy finder, picker, split panes
43+ (horizontal and vertical, per-buffer sizing, ` alt+w ` window leader for
44+ split/close/navigate/resize, click-to-focus).
4345- ** Language intelligence (LSP)** — hover, signature help with overload
4446 cycling, completion, code actions, rename, find-references, call
4547 hierarchy, inlay hints, document outline, symbol search, semantic
@@ -59,33 +61,27 @@ place. Grouped by area, each backed by a package under
5961
6062Roughly in priority order.
6163
62- 1 . ** Split panes.** Horizontal and vertical view splits over the same or
63- different buffers. The single biggest layout gap against Zed. Has to
64- respect the first-paint rule and the recursive pump pattern used for
65- the existing panes. The geometry foundation is in place:
66- ` internal/splitlayout ` is a pure binary layout tree (leaf = pane,
67- internal = Columns/Rows split with a ratio) with split, close, ordered
68- and directional focus, divider-resize, rectangle computation, divider
69- line positions for rendering, and ` PaneAt ` hit-testing for mouse focus,
70- all constant-time and unit-tested. What remains is host wiring: rendering
71- each pane's editor view into its rect, drawing the dividers, routing
72- input to the focused pane, and the focus and split keybindings. The
73- wiring is decomposed into four green-shippable slices in
74- ` docs/nook/design/01-split-panes-host-wiring.md ` .
75- 2 . ** Full multi-cursor.** Add-cursor-at-next-match (ctrl+d),
64+ 1 . ** Full multi-cursor.** Add-cursor-at-next-match (ctrl+d),
7665 select-all-occurrences (alt+d), stack-above/below (ctrl+↑/↓),
7766 split-selection-into-lines (alt+i), multi-line edit at every cursor,
7867 and consistent placement of the primary within its own match all
7968 work. What remains for a first class mode: column/box cursors (drag
8069 or keyboard column selection).
81- 3 . ** Vim mode.** Modal editing as an opt-in layer. Gated on an explicit
70+ 2 . ** Vim mode.** Modal editing as an opt-in layer. Gated on an explicit
8271 product decision before build — it is a large surface and should not
8372 land half-done.
84- 4 . ** Tree-sitter highlighting.** Upgrade the syntax backend from chroma
73+ 3 . ** Tree-sitter highlighting.** Upgrade the syntax backend from chroma
8574 to tree-sitter (via WASM) for incremental, error-tolerant parsing.
8675 chroma stays the fallback for grammars not yet wired.
87- 5 . ** Minimap.** Optional document overview gutter. Lowest priority of the
88- five; useful but not load-bearing for the editing experience.
76+ 4 . ** Minimap.** Optional document overview gutter. Lowest priority;
77+ useful but not load-bearing for the editing experience. The geometry
78+ foundation is in place: ` internal/minimap ` is a pure, constant-time
79+ ` Model ` that maps between source lines and minimap rows (` LineRange ` ,
80+ ` RowForLine ` , ` ViewportWindow ` for the highlight band, ` LineForRow `
81+ for click-to-scroll), fully unit-tested, no I/O, inside the
82+ first-paint rule. What remains is host wiring: rendering the column
83+ from per-row buffer density, drawing the viewport band, and routing
84+ click-to-scroll.
8985
9086## How to pick the next slice
9187
0 commit comments