Command line: the bare-word probe keeps no empty undo step

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
ramox81andClaude Opus 5.5 committed 2026-10-07 11:40:37 +03:00
1 parent 4ef92c3ef1
commit a98e600f09
2 files changed
+14

No files matched your search

+5
View File
@@ -798,9 +798,14 @@ impl OpenCADStudio {
{
return self.dispatch_command(cmd);
}
// Close an earlier step first so only what the probe opens is dropped below.
self.finish_pending_history(i);
let start_task = self.dispatch_command(tokens[0]);
if self.tabs[i].active_cmd.is_none() {
// Not an interactive tool — an inline-argument command (`PDMODE 3`).
// The bare word only probed it: a step it kept without changing
// anything is not an undo step of its own.
self.drop_unchanged_pending_history(i);
return self.dispatch_command(cmd);
}
let toks: Vec<String> = tokens.iter().map(|s| s.to_string()).collect();
+9
View File
@@ -341,6 +341,15 @@ impl OpenCADStudio {
self.push_undo_entry(i, HistorySnapshot::Delta(Box::new(delta)));
}
/// Finish the pending history step, dropping it when it changed nothing
/// even if it was opened as a mark ([`Self::push_undo_mark`]).
pub(super) fn drop_unchanged_pending_history(&mut self, i: usize) {
if let Some(pending) = self.tabs[i].history.pending.as_mut() {
pending.keep_empty = false;
}
self.finish_pending_history(i);
}
pub(super) fn finish_all_pending_history(&mut self) {
for i in 0..self.tabs.len() {
self.finish_pending_history(i);