feat: add linewise Visual selection and paste

This commit is contained in:
2026-10-10 17:20:22 +02:00
parent dc0bdd60d0
commit 27b94744f0
8 changed files with 1001 additions and 62 deletions
+33
View File
@@ -1527,6 +1527,39 @@ end
assert_eq!(session.editor().lines(), &["base"]);
}
#[test]
fn configured_linewise_change_and_paste_preserve_rows_and_one_replacement_history() {
let fixture = Fixture::new();
fixture.file("buffer.txt", " alpha\n界beta\ntail");
let mut session = fixture.open(
r#"
Vamp.configure do |config|
config.clipboard_mode = "separate"
config.bind "V", nil
config.bind "s", config.core.select_linewise
config.bind "s", config.core.select_linewise, mode: config.modes.visual
config.bind "r", config.core.change, mode: config.modes.visual
end
"#,
);
for key in "llsjrnew".chars() {
session.handle(Input::Char(key));
}
session.handle(Input::Escape);
assert_eq!(session.editor().lines(), &["new", "tail"]);
session.handle(Input::Char('p'));
assert_eq!(
session.editor().lines(),
&["new", " alpha", "界beta", "tail"]
);
session.handle(Input::Char('u'));
assert_eq!(session.editor().lines(), &["new", "tail"]);
session.handle(Input::Char('u'));
assert_eq!(session.editor().lines(), &[" alpha", "界beta", "tail"]);
session.handle(Input::Char('U'));
assert_eq!(session.editor().lines(), &["new", "tail"]);
}
#[test]
fn configured_selection_actions_edit_together_and_invoke_plugins_once() {
let fixture = Fixture::new();