diff --git a/docs/PLAN.md b/docs/PLAN.md index 44884bc..d9840ae 100644 --- a/docs/PLAN.md +++ b/docs/PLAN.md @@ -17,6 +17,20 @@ interchangeable doors: `M-x` (keyboard), a radial caret menu (mouse), and the `:` command line (optional). Every feature registers its commands once and becomes reachable from all three. No action depends on an F-key or a chord. +### Guiding principle: natural actions drive editing + +Each door suits a different kind of action, and placing an action in the wrong +door breaks flow: + +- **Radial** is for actions that **complete in place** — cut, copy, paste, + comment, case changes, join lines. The gesture starts and ends at the cursor; + attention never leaves the text. +- Actions that **open a panel demanding immediate focus elsewhere** (Find, + Replace, goto) do **not** belong in the radial. Being flung to a panel right + after a cursor gesture is jarring. These belong in the **command palette** or + a **keybind**, where the context switch is expected. The radial keeps a + "Command Palette…" slice as the escape hatch to them. + ## Why a custom matcher is the keystone Kate's built-in command bar cannot be fixed in place: diff --git a/src/radial/radialconfig.cpp b/src/radial/radialconfig.cpp index c51e3e0..0651735 100644 --- a/src/radial/radialconfig.cpp +++ b/src/radial/radialconfig.cpp @@ -97,13 +97,18 @@ QList RadialConfig::builtinDefault() edit.trigger = QStringLiteral("Alt+R"); edit.mouseButton = QStringLiteral("RightButton"); // natural radial gesture + // The radial holds actions that complete IN PLACE — no panel that pulls + // attention elsewhere. Panel-opening actions (Find, Replace) deliberately + // live in the command palette / keybinds instead, so the radial preserves + // editing flow. The "Command Palette…" slice is the escape hatch to those. RadialNode more; more.label = QStringLiteral("More"); more.children = { leaf(QStringLiteral("Comment"), QStringLiteral("comment")), leaf(QStringLiteral("Uncomment"), QStringLiteral("uncomment")), - leaf(QStringLiteral("Find"), QStringLiteral("edit_find")), - leaf(QStringLiteral("Replace"), QStringLiteral("edit_replace")), + leaf(QStringLiteral("Uppercase"), QStringLiteral("uppercase")), + leaf(QStringLiteral("Lowercase"), QStringLiteral("lowercase")), + leaf(QStringLiteral("Join Lines"), QStringLiteral("joinLines")), // Opens the full command palette (handled specially by the plugin). leaf(QStringLiteral("Command Palette…"), QStringLiteral("ollie_command_palette")), };