From 10ceac998e43483f6ae0dd504b9e64b8cad77ad0 Mon Sep 17 00:00:00 2001 From: Fernando Herrera Date: Sun, 27 Feb 2022 13:41:04 +0000 Subject: [PATCH] menu keybindings in default file (#4651) * menu keybindings in default file * remove print * change keybinding --- src/default_config.nu | 39 +++++++++++++++++++++++++++++++---- src/reedline_config.rs | 46 ------------------------------------------ 2 files changed, 35 insertions(+), 50 deletions(-) diff --git a/src/default_config.nu b/src/default_config.nu index 59ef88e626..13e93c1097 100644 --- a/src/default_config.nu +++ b/src/default_config.nu @@ -192,11 +192,42 @@ let $config = { } keybindings: [ { - name: completion + name: completion_menu + modifier: none + keycode: tab + mode: emacs # emacs vi_normal vi_insert + event: { + until: [ + { send: menu name: completion_menu } + { send: menunext } + ] + } + } + { + name: completion_previous + modifier: shift + keycode: backtab + mode: emacs # emacs vi_normal vi_insert + event: { send: menuprevious } + } + { + name: history_menu modifier: control - keycode: char_t - mode: vi_insert # emacs vi_normal vi_insert - event: { send: menu name: context_menu } + keycode: char_x + mode: emacs # emacs vi_normal vi_insert + event: { + until: [ + { send: menu name: history_menu } + { send: menupagenext } + ] + } + } + { + name: history_previous + modifier: control + keycode: char_z + mode: emacs # emacs vi_normal vi_insert + event: { send: menupageprevious } } ] } diff --git a/src/reedline_config.rs b/src/reedline_config.rs index 5a69481093..075138d6b6 100644 --- a/src/reedline_config.rs +++ b/src/reedline_config.rs @@ -123,38 +123,6 @@ pub(crate) fn add_history_menu(line_editor: Reedline, config: &Config) -> Reedli line_editor.with_menu(Box::new(history_menu)) } -fn add_menu_keybindings(keybindings: &mut Keybindings) { - keybindings.add_binding( - KeyModifiers::CONTROL, - KeyCode::Char('x'), - ReedlineEvent::UntilFound(vec![ - ReedlineEvent::Menu("history_menu".to_string()), - ReedlineEvent::MenuPageNext, - ]), - ); - - keybindings.add_binding( - KeyModifiers::CONTROL | KeyModifiers::SHIFT, - KeyCode::Char('x'), - ReedlineEvent::MenuPagePrevious, - ); - - keybindings.add_binding( - KeyModifiers::NONE, - KeyCode::Tab, - ReedlineEvent::UntilFound(vec![ - ReedlineEvent::Menu("completion_menu".to_string()), - ReedlineEvent::MenuNext, - ]), - ); - - keybindings.add_binding( - KeyModifiers::SHIFT, - KeyCode::BackTab, - ReedlineEvent::MenuPrevious, - ); -} - pub enum KeybindingsMode { Emacs(Keybindings), Vi { @@ -168,17 +136,6 @@ pub(crate) fn create_keybindings(config: &Config) -> Result { let mut keybindings = default_emacs_keybindings(); - add_menu_keybindings(&mut keybindings); - - // temporal keybinding with multiple events - keybindings.add_binding( - KeyModifiers::SHIFT, - KeyCode::BackTab, - ReedlineEvent::Multiple(vec![ - ReedlineEvent::Edit(vec![EditCommand::InsertChar('p')]), - ReedlineEvent::Enter, - ]), - ); for parsed_keybinding in parsed_keybindings { if parsed_keybinding.mode.into_string("", config).as_str() == "emacs" { @@ -192,9 +149,6 @@ pub(crate) fn create_keybindings(config: &Config) -> Result