vim: Allow search with operators & visual mode (#10226)

Fixes: #4346

Release Notes:

- vim: Add search motions (`/,?,n,N,*,#`) in visual modes and as targets
for operators like `d`,`c`,`y`
([#4346](https://github.com/zed-industries/zed/issues/4346)).
This commit is contained in:
Conrad Irwin 2024-04-08 15:20:14 -06:00 committed by GitHub
parent f9bf60f017
commit f327118e06
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 316 additions and 36 deletions

View file

@ -21,7 +21,7 @@ use collections::HashMap;
use command_palette_hooks::{CommandPaletteFilter, CommandPaletteInterceptor};
use editor::{
movement::{self, FindRange},
Editor, EditorEvent, EditorMode,
Anchor, Editor, EditorEvent, EditorMode,
};
use gpui::{
actions, impl_actions, Action, AppContext, EntityId, FocusableView, Global, KeystrokeEvent,
@ -295,6 +295,18 @@ impl Vim {
Some(editor.update(cx, |editor, cx| update(self, editor, cx)))
}
fn editor_selections(&mut self, cx: &mut WindowContext) -> Vec<Range<Anchor>> {
self.update_active_editor(cx, |_, editor, _| {
editor
.selections
.disjoint_anchors()
.iter()
.map(|selection| selection.tail()..selection.head())
.collect()
})
.unwrap_or_default()
}
/// When doing an action that modifies the buffer, we start recording so that `.`
/// will replay the action.
pub fn start_recording(&mut self, cx: &mut WindowContext) {