From 64a796d436eea5f8478c5c23f8b4ca35c2884efc Mon Sep 17 00:00:00 2001 From: Congyu <52687642+Congyuwang@users.noreply.github.com> Date: Wed, 17 Jul 2024 04:46:03 +0800 Subject: [PATCH] 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 --- crates/editor/src/editor.rs | 7 +++++++ crates/vim/src/vim.rs | 1 + 2 files changed, 8 insertions(+) diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index e62369164c..6c6035d4e1 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -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) { + cx.emit(EditorEvent::FocusedIn) + } + fn handle_focus_out(&mut self, event: FocusOutEvent, _cx: &mut ViewContext) { 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, diff --git a/crates/vim/src/vim.rs b/crates/vim/src/vim.rs index cf800f854f..43915d796d 100644 --- a/crates/vim/src/vim.rs +++ b/crates/vim/src/vim.rs @@ -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)), _ => {} }));