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

Congyu and Conrad Irwin created

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>

Change summary

crates/editor/src/editor.rs | 7 +++++++
crates/vim/src/vim.rs       | 1 +
2 files changed, 8 insertions(+)

Detailed changes

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<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,

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)),
             _ => {}
         }));