The rest of vim, on nodes. Visual mode takes in what lies between where it started and the cursor: on the canvas, every node the rectangle from one end's box to the other's touches; in the outline and the Note view, the nodes in between in reading order. V takes whole branches, Ctrl+click and Ctrl+drag pick with the mouse, and the operators take exactly what's selected: d, y, > and <, M, and the pickers on every node at once. Registers now hold text or nodes, so yy, dd and x keep what they take and p, P and ]p paste it, layout and links included. "+ is the system clipboard through arboard: nodes go there as Markdown in the user's format (## headings, a --- tag list, the body), and come back whole while the clipboard still holds them. clipboard = "unnamedplus" makes plain yanks use it, as in vim. . repeats the last change made with keys, with the text typed after it. / opens a Telescope-style search: fuzzy matches over titles, tags and bodies, best first, with the note of the one you're on beside them; n and N go on with it, and :find searches straight away. Each pane keeps a jump list for Ctrl-o and Ctrl-i that crosses documents and reopens closed ones. Capital marks lead into any document and, like the small ones, are kept in memory.ron. gd follows a cross-link, and :marks, :jumps and :registers list what they hold. Co-Authored-By: Claude Opus 5.5 <[email protected]>
46 lines
1.8 KiB
TOML
46 lines
1.8 KiB
TOML
[package]
|
|
name = "cumulus"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
# The version cumulus is built and tested with (pinned in rust-toolchain.toml).
|
|
rust-version = "1.90"
|
|
description = "Brainstorm in the terminal: idea graphs on a 2D canvas, with vim keys and the mouse."
|
|
publish = false
|
|
|
|
[dependencies]
|
|
# Document files are RON (Rust Object Notation), read and written through serde.
|
|
serde = { version = "1", features = ["derive"] }
|
|
ron = "0.12"
|
|
# Config files are TOML: keys.toml so far, config.toml and themes later.
|
|
toml = "1"
|
|
# Error types with readable messages, for the parts that report problems.
|
|
thiserror = "2"
|
|
# Terminal user interface. The crossterm backend works on Windows, Linux and
|
|
# macOS. Default features are off to skip widgets cumulus doesn't use.
|
|
ratatui = { version = "0.30", default-features = false, features = ["crossterm_0_29", "layout-cache"] }
|
|
# How many terminal columns text takes (accents, Asian scripts, emoji), for
|
|
# sizing node boxes.
|
|
unicode-width = "0.2"
|
|
# Where one character ends and the next begins, so the cursor steps over an
|
|
# accented letter or an emoji in one go.
|
|
unicode-segmentation = "1"
|
|
# Where each OS keeps settings and app data: %APPDATA% on Windows,
|
|
# ~/.config and ~/.local/share on Linux.
|
|
directories = "6"
|
|
# The system clipboard, for the "+ register: Windows, and X11 or Wayland on
|
|
# Linux. Images are left out (default features off): cumulus copies text.
|
|
arboard = { version = "3", default-features = false, features = ["wayland-data-control"] }
|
|
|
|
[lints.rust]
|
|
unsafe_code = "forbid"
|
|
|
|
[lints.clippy]
|
|
all = { level = "warn", priority = -1 }
|
|
|
|
[profile.release]
|
|
# A smaller, faster program: optimize across all crates at once (lto, in one
|
|
# piece with codegen-units = 1), and leave out the debug symbols (strip).
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|