Fix renaming sometimes not working in vim mode (#14320)

Disable vim key contexts during renaming, to fix renaming being
interfered with vim commands.

Release Notes:

- Fixed renaming sometimes not working in vim mode
[#14292](https://github.com/zed-industries/zed/issues/14292)
[#11882](https://github.com/zed-industries/zed/issues/11882).
- Fixed inline assistant sometimes not working in vim mode #11559

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
Congyu 2024-07-17 04:46:03 +08:00 committed by GitHub
parent 76594ae5cd
commit 64a796d436
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 0 deletions

View File

@ -1770,6 +1770,8 @@ impl Editor {
);
let focus_handle = cx.focus_handle();
cx.on_focus(&focus_handle, Self::handle_focus).detach();
cx.on_focus_in(&focus_handle, Self::handle_focus_in)
.detach();
cx.on_focus_out(&focus_handle, Self::handle_focus_out)
.detach();
cx.on_blur(&focus_handle, Self::handle_blur).detach();
@ -11632,6 +11634,10 @@ impl Editor {
}
}
fn handle_focus_in(&mut self, cx: &mut ViewContext<Self>) {
cx.emit(EditorEvent::FocusedIn)
}
fn handle_focus_out(&mut self, event: FocusOutEvent, _cx: &mut ViewContext<Self>) {
if event.blurred != self.focus_handle {
self.last_focused_descendant = Some(event.blurred);
@ -12236,6 +12242,7 @@ pub enum EditorEvent {
},
Reparsed(BufferId),
Focused,
FocusedIn,
Blurred,
DirtyChanged,
Saved,

View File

@ -268,6 +268,7 @@ impl Vim {
EditorEvent::Edited { .. } => {
Vim::update(cx, |vim, cx| vim.transaction_ended(editor, cx))
}
EditorEvent::FocusedIn => Vim::update(cx, |vim, cx| vim.sync_vim_settings(cx)),
_ => {}
}));