vim: Fix escape key switching back to default mode instead of normal mode (#31843)
Closes #31728 This PR introduced new setting `"helix_mode"`. Enabling which will enable the `vim_mode` along with `helix` behavior. This solves issue where `vim`'s `default_mode` was being used to switch between mode instead of opening in `default_mode`. When `helix_mode` is enabled switcing to `Normal mode` will now switch to `HelixNormal` Release Notes: - Fixed - escape key not switching to normal mode when default_mode is insert - Added - `helix_mode` setting to enable/disable helix key bindings --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
parent
d2ca68bd5d
commit
ab189b898d
8 changed files with 72 additions and 14 deletions
|
@ -1210,19 +1210,27 @@ pub fn handle_keymap_file_changes(
|
|||
cx: &mut App,
|
||||
) {
|
||||
BaseKeymap::register(cx);
|
||||
VimModeSetting::register(cx);
|
||||
vim_mode_setting::init(cx);
|
||||
|
||||
let (base_keymap_tx, mut base_keymap_rx) = mpsc::unbounded();
|
||||
let (keyboard_layout_tx, mut keyboard_layout_rx) = mpsc::unbounded();
|
||||
let mut old_base_keymap = *BaseKeymap::get_global(cx);
|
||||
let mut old_vim_enabled = VimModeSetting::get_global(cx).0;
|
||||
let mut old_helix_enabled = vim_mode_setting::HelixModeSetting::get_global(cx).0;
|
||||
|
||||
cx.observe_global::<SettingsStore>(move |cx| {
|
||||
let new_base_keymap = *BaseKeymap::get_global(cx);
|
||||
let new_vim_enabled = VimModeSetting::get_global(cx).0;
|
||||
let new_helix_enabled = vim_mode_setting::HelixModeSetting::get_global(cx).0;
|
||||
|
||||
if new_base_keymap != old_base_keymap || new_vim_enabled != old_vim_enabled {
|
||||
if new_base_keymap != old_base_keymap
|
||||
|| new_vim_enabled != old_vim_enabled
|
||||
|| new_helix_enabled != old_helix_enabled
|
||||
{
|
||||
old_base_keymap = new_base_keymap;
|
||||
old_vim_enabled = new_vim_enabled;
|
||||
old_helix_enabled = new_helix_enabled;
|
||||
|
||||
base_keymap_tx.unbounded_send(()).unwrap();
|
||||
}
|
||||
})
|
||||
|
@ -1410,7 +1418,7 @@ pub fn load_default_keymap(cx: &mut App) {
|
|||
cx.bind_keys(KeymapFile::load_asset(asset_path, cx).unwrap());
|
||||
}
|
||||
|
||||
if VimModeSetting::get_global(cx).0 {
|
||||
if VimModeSetting::get_global(cx).0 || vim_mode_setting::HelixModeSetting::get_global(cx).0 {
|
||||
cx.bind_keys(KeymapFile::load_asset(VIM_KEYMAP_PATH, cx).unwrap());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue