diff --git a/crates/engine/src/cmd/text.rs b/crates/engine/src/cmd/text.rs index 8cb05ca3..9c6d88e1 100644 --- a/crates/engine/src/cmd/text.rs +++ b/crates/engine/src/cmd/text.rs @@ -36,7 +36,6 @@ pub fn specs() -> Vec { autocorrect_options ), cmd!("text.insert", "Type Text", [], None, "{text} (\\n = new paragraph, \\u000b = line break)", has_text, insert), - cmd!("text.delete", "Delete Text", [], Some("Backspace"), "{dir?: backward|forward|wordBackward|wordForward}", has_text, delete), // The input method's composition: shown in place, an undo step only once committed. CommandSpec { id: "text.compose", @@ -58,7 +57,6 @@ pub fn specs() -> Vec { has_text, commit ), - cmd!(noundo "text.move", "Move Insertion Point", [], None, "{to: left|right|up|down|wordLeft|wordRight|lineStart|lineEnd|paraStart|paraEnd|start|end, extend?: bool}", has_text, move_caret), cmd!( "text.delete", "Delete Text", diff --git a/crates/engine/src/tests.rs b/crates/engine/src/tests.rs index 926a8fd1..9644bf6f 100644 --- a/crates/engine/src/tests.rs +++ b/crates/engine/src/tests.rs @@ -3454,3 +3454,10 @@ fn background_loads_are_adopted_through_a_command() { assert!(s.execute("file.adopt", &json!({})).is_err()); std::fs::remove_file(&path).ok(); } + +#[test] +fn every_command_id_is_registered_once() { + let mut seen = std::collections::HashSet::new(); + let dups: Vec<&str> = crate::command_specs().iter().map(|c| c.id).filter(|id| !seen.insert(*id)).collect(); + assert!(dups.is_empty(), "registered more than once: {dups:?}"); +}