pull/6960/merge
sscheele 2025-06-15 13:09:25 +02:00 committed by GitHub
commit dbd8588a5f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 4 deletions

View File

@ -865,17 +865,26 @@ impl EditorView {
last_mode = current_mode;
};
match &key_result {
match key_result {
KeymapResult::Matched(command) => {
execute_command(command);
execute_command(&command);
}
KeymapResult::Pending(node) => cxt.editor.autoinfo = Some(node.infobox()),
KeymapResult::MatchedSequence(commands) => {
for command in commands {
execute_command(command);
execute_command(&command);
}
}
KeymapResult::NotFound | KeymapResult::Cancelled(_) => return Some(key_result),
KeymapResult::NotFound => return Some(key_result),
KeymapResult::Cancelled(mut pending) => {
if !matches!(
self.handle_keymap_event(mode, cxt, event),
Some(KeymapResult::NotFound)
) {
pending.pop();
}
return Some(KeymapResult::Cancelled(pending));
}
}
None
}

View File

@ -444,6 +444,23 @@ async fn cursor_position_append_eof() -> anyhow::Result<()> {
Ok(())
}
#[tokio::test(flavor = "multi_thread")]
async fn repeated_key_movement() -> anyhow::Result<()> {
test((
"#[|f]#oo",
"]]<space>",
helpers::platform_line("#[|f]#oo\n"),
))
.await?;
test((
"#[|f]#oo\n\nbar",
"]]p",
helpers::platform_line("#[foo\n|]#\nbar"),
))
.await?;
Ok(())
}
#[tokio::test(flavor = "multi_thread")]
async fn select_mode_tree_sitter_next_function_is_union_of_objects() -> anyhow::Result<()> {
test_with_config(