Add the outline and Note views, splits, popups and the bars
The outline shows the tree as an indented list: a row per node with its fold marker, tree lines in the parent's color, tags, a ¶ for a body and +N for what a fold hides. zb shows every body under its title, to read a document like a page. j/k go row by row, h/l to the parent and the first child, a click on a marker folds, and titles are edited in their row, rapid entry included. In move mode, j/k swap the node with its siblings, h takes it out a level and l puts it under the one above. The Note view shows one node at full size, as parts: the title, the tags, the body, each link and each child. j/k step through them, Enter or i edits the part (or goes to that link or child), and h/l turn the page to the sibling before or after. Bodies and tags are edited with the same editor as titles: Enter starts a line in a body, Tab types spaces, and tags that don't parse come back as they were. cc, C and s now start typing on an empty line too, as in vim. Panes split the screen the way vim's windows do (Ctrl-w v s h j k l w c o =, :split, :vsplit, :only), each in a box with its view and document, and any pane can show any open document (gt, gT, :b, the documents picker, a click on the document bar). The status bar has two lines: the mode, the view, the breadcrumb or a message, the keys typed; then key hints for what you're doing, which <Space>w hides with which-key. Popups are a mode of their own, built on one list: ? lists every key and command, / searches it and Enter runs what you pick; the right-click menu lists what you can do with a node (with the keys that do the same) or adds a new idea on the empty canvas; the pickers set a node's color, border, style or tags. K opens the body in a card beside the node, where i edits it in place. The example now opens two documents (the garden, and the kitchen its portal leads to) and its tests drive all of the above end to end. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
84aefbecdb
commit
c587c42115
37 files changed
+5579
-730
No files matched your search
@@ -41,12 +41,16 @@ The plan for the everyday keys (all of them are in DESIGN.md):
|
||||
| `u` `Ctrl-r` | undo / redo |
|
||||
| `za` `zf` `zi` | fold, auto-fold, focus |
|
||||
| `+` `-` | zoom in / out |
|
||||
| `K` | the body in a card beside the node (`i` edits it there) |
|
||||
| `C` `M` `v` | connect, move, select |
|
||||
| `<Space>` | the action menu |
|
||||
| `:` `?` | command line, help |
|
||||
| `<Space>` | the action menu: `c` color, `t` tags, `vo` outline, `vn` note… |
|
||||
| `Ctrl-w v` `Ctrl-w s` | split the pane side by side / stacked (`Ctrl-w hjkl` to move between them) |
|
||||
| `gt` `gT` | the next / previous document |
|
||||
| `:` `?` | command line, help (search it with `/`, Enter runs the key or command) |
|
||||
|
||||
After the first key of a sequence (`g`, `z`, `d`, `<Space>`…), a popup lists
|
||||
what can follow.
|
||||
what can follow. The right mouse button opens a menu of what you can do with
|
||||
a node.
|
||||
|
||||
## Development
|
||||
|
||||
@@ -59,7 +63,7 @@ cargo fmt # format the code
|
||||
While the app is being built, the examples try out each part:
|
||||
|
||||
```sh
|
||||
cargo run --example canvas # the canvas, vim keys, which-key, :commands, editing titles
|
||||
cargo run --example canvas # everything so far: the views, splits, popups, editing
|
||||
cargo test show_canvas -- --ignored --nocapture # print it at each zoom, as text
|
||||
cargo test --example canvas # type key sequences into it, and check what they do
|
||||
```
|
||||
Reference in new issue
Block a user