From 2580dd5ea85d86262c94363dfea9f990eaf56196 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Mon, 28 Sep 2026 19:21:22 -0300 Subject: Everything a B1 chord does while B1 is down is one undo step B1-B2 then B1-B3 cut and pasted as two undo steps. acme marks the file once per B1 hold (text.c:881, textselect), so the pair is a copy. The chord now takes one undo point when it begins and its edits share it until B1 comes up. Co-Authored-By: Claude Opus 5.5 --- src/edit.zig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/edit.zig') diff --git a/src/edit.zig b/src/edit.zig index 8d3a746e..1e480785 100644 --- a/src/edit.zig +++ b/src/edit.zig @@ -2012,7 +2012,8 @@ pub fn pushUndo(p: *Pardes, t: *Text) void { // one keystroke, one undo step — even when it edited at ten cursors. if (p.multi_on and !p.multi_first) return; switch (t.what) { - .body => {}, + // A B1 chord took its one undo point when it began (mouse.zig). + .body => if (p.chord_hold) return, .tag, .column, .workspace => return t.remember(p.gpa, if (t.own) |own| .{ .text = own } else null), // a prompt's answer is typed once and gone; it keeps no history .input => return, -- cgit v1.3