vim: Enter/n/N to navigate search results
This commit is contained in:
parent
2ffce24ef0
commit
96ce0bb783
2 changed files with 50 additions and 0 deletions
|
@ -60,6 +60,8 @@
|
||||||
"ignorePunctuation": true
|
"ignorePunctuation": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"n": "search::SelectNextMatch",
|
||||||
|
"shift-n": "search::SelectPrevMatch",
|
||||||
"%": "vim::Matching",
|
"%": "vim::Matching",
|
||||||
"f": [
|
"f": [
|
||||||
"vim::PushOperator",
|
"vim::PushOperator",
|
||||||
|
@ -335,5 +337,11 @@
|
||||||
"Normal"
|
"Normal"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"context": "BufferSearchBar",
|
||||||
|
"bindings": {
|
||||||
|
"enter": "buffer_search::FocusEditor"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -5,6 +5,7 @@ mod vim_binding_test_context;
|
||||||
mod vim_test_context;
|
mod vim_test_context;
|
||||||
|
|
||||||
use command_palette::CommandPalette;
|
use command_palette::CommandPalette;
|
||||||
|
use editor::DisplayPoint;
|
||||||
pub use neovim_backed_binding_test_context::*;
|
pub use neovim_backed_binding_test_context::*;
|
||||||
pub use neovim_backed_test_context::*;
|
pub use neovim_backed_test_context::*;
|
||||||
pub use vim_binding_test_context::*;
|
pub use vim_binding_test_context::*;
|
||||||
|
@ -153,3 +154,44 @@ async fn test_escape_command_palette(cx: &mut gpui::TestAppContext) {
|
||||||
assert!(!cx.workspace(|workspace, _| workspace.modal::<CommandPalette>().is_some()));
|
assert!(!cx.workspace(|workspace, _| workspace.modal::<CommandPalette>().is_some()));
|
||||||
cx.assert_state("aˇbc\n", Mode::Insert);
|
cx.assert_state("aˇbc\n", Mode::Insert);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[gpui::test]
|
||||||
|
async fn test_selection_on_search(cx: &mut gpui::TestAppContext) {
|
||||||
|
let mut cx = VimTestContext::new(cx, true).await;
|
||||||
|
|
||||||
|
cx.set_state(indoc! {"aa\nbˇb\ncc\ncc\ncc\n"}, Mode::Normal);
|
||||||
|
cx.simulate_keystrokes(["/", "c", "c"]);
|
||||||
|
|
||||||
|
let search_bar = cx.workspace(|workspace, cx| {
|
||||||
|
workspace
|
||||||
|
.active_pane()
|
||||||
|
.read(cx)
|
||||||
|
.toolbar()
|
||||||
|
.read(cx)
|
||||||
|
.item_of_type::<BufferSearchBar>()
|
||||||
|
.expect("Buffer search bar should be deployed")
|
||||||
|
});
|
||||||
|
|
||||||
|
search_bar.read_with(cx.cx, |bar, cx| {
|
||||||
|
assert_eq!(bar.query_editor.read(cx).text(cx), "cc");
|
||||||
|
});
|
||||||
|
|
||||||
|
// wait for the query editor change event to fire.
|
||||||
|
search_bar.next_notification(&cx).await;
|
||||||
|
|
||||||
|
cx.update_editor(|editor, cx| {
|
||||||
|
let highlights = editor.all_background_highlights(cx);
|
||||||
|
assert_eq!(3, highlights.len());
|
||||||
|
assert_eq!(
|
||||||
|
DisplayPoint::new(2, 0)..DisplayPoint::new(2, 2),
|
||||||
|
highlights[0].0
|
||||||
|
)
|
||||||
|
});
|
||||||
|
cx.simulate_keystrokes(["enter"]);
|
||||||
|
|
||||||
|
cx.assert_state(indoc! {"aa\nbb\nˇcc\ncc\ncc\n"}, Mode::Normal);
|
||||||
|
cx.simulate_keystrokes(["n"]);
|
||||||
|
cx.assert_state(indoc! {"aa\nbb\ncc\nˇcc\ncc\n"}, Mode::Normal);
|
||||||
|
cx.simulate_keystrokes(["shift-n"]);
|
||||||
|
cx.assert_state(indoc! {"aa\nbb\nˇcc\ncc\ncc\n"}, Mode::Normal);
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue