def _load_key_bindings(*registries): registry = MergedRegistry([ load_abort_and_exit_bindings(), load_basic_system_bindings(), load_mouse_bindings(), load_cpr_bindings(), ] + list(registries)) return registry
def get_key_bindings(tosh): global_registry = KeyBindingManager.for_prompt(enable_all=Condition(_in_prompt_tab)).registry mouse_registry = ConditionalRegistry(load_mouse_bindings(), Condition(_in_interactive_tab)) prompt_registry = ConditionalRegistry(filter=Condition(_in_prompt_tab)) interactive_registry = ConditionalRegistry(filter=Condition(_in_interactive_tab)) @global_registry.add_binding(Keys.BracketedPaste) def _paste(event): tosh.window.active_tab().paste(event) @prompt_registry.add_binding(Keys.ControlW) @interactive_registry.add_binding(Keys.ControlB, 'w') def _close_tab(event): tosh.window.active_tab().close() @prompt_registry.add_binding(Keys.ControlT) @interactive_registry.add_binding(Keys.ControlB, 't') def _new_prompt_tab(event): from .tosh_tab import ToshTab tosh.window.add_tab(ToshTab(tosh)) @interactive_registry.add_binding(Keys.Any) def _forward_to_session(event): tosh.window.active_tab().write_to_ssh(prompt_toolkit_key_to_vt100_key(event.key_sequence[0].key, True)) @global_registry.add_binding(Keys.ControlB, '1') @global_registry.add_binding(Keys.ControlB, '2') @global_registry.add_binding(Keys.ControlB, '3') @global_registry.add_binding(Keys.ControlB, '4') @global_registry.add_binding(Keys.ControlB, '5') @global_registry.add_binding(Keys.ControlB, '6') @global_registry.add_binding(Keys.ControlB, '7') @global_registry.add_binding(Keys.ControlB, '8') @global_registry.add_binding(Keys.ControlB, '9') def _change_tab(event): tosh.window.switch_tab(int(event.key_sequence[-1].key) - 1) @global_registry.add_binding(Keys.ControlB, Keys.Left) def _prev_tab(_): tosh.window.prev_tab() @global_registry.add_binding(Keys.ControlB, Keys.Right) def _next_tab(_): tosh.window.next_tab() return MergedRegistry([global_registry, prompt_registry, interactive_registry, mouse_registry])
def __init__(self, registry=None, enable_vi_mode=None, # (`enable_vi_mode` is deprecated.) get_search_state=None, enable_abort_and_exit_bindings=False, enable_system_bindings=False, enable_search=False, enable_open_in_editor=False, enable_extra_page_navigation=False, enable_auto_suggest_bindings=False, enable_all=True): assert registry is None or isinstance(registry, Registry) assert get_search_state is None or callable(get_search_state) # Create registry. self.registry = registry or Registry() # Accept both Filters and booleans as input. enable_abort_and_exit_bindings = to_cli_filter(enable_abort_and_exit_bindings) enable_system_bindings = to_cli_filter(enable_system_bindings) enable_search = to_cli_filter(enable_search) enable_open_in_editor = to_cli_filter(enable_open_in_editor) enable_extra_page_navigation = to_cli_filter(enable_extra_page_navigation) enable_auto_suggest_bindings = to_cli_filter(enable_auto_suggest_bindings) enable_all = to_cli_filter(enable_all) # Load basic bindings. load_basic_bindings(self.registry, enable_all) load_mouse_bindings(self.registry, enable_all) load_abort_and_exit_bindings( self.registry, enable_abort_and_exit_bindings & enable_all) load_basic_system_bindings(self.registry, enable_system_bindings & enable_all) # Load emacs bindings. load_emacs_bindings(self.registry, enable_all) load_emacs_open_in_editor_bindings( self.registry, enable_open_in_editor & enable_all) load_emacs_search_bindings( self.registry, filter=enable_search & enable_all, get_search_state=get_search_state) load_emacs_system_bindings( self.registry, enable_system_bindings & enable_all) load_extra_emacs_page_navigation_bindings( self.registry, enable_extra_page_navigation & enable_all) # Load Vi bindings. load_vi_bindings( self.registry, enable_visual_key=~enable_open_in_editor, filter=enable_all, get_search_state=get_search_state) load_vi_open_in_editor_bindings( self.registry, enable_open_in_editor & enable_all) load_vi_search_bindings( self.registry, filter=enable_search & enable_all, get_search_state=get_search_state) load_vi_system_bindings( self.registry, enable_system_bindings & enable_all) load_extra_vi_page_navigation_bindings( self.registry, enable_extra_page_navigation & enable_all) # Suggestion bindings. # (This has to come at the end, because the Vi bindings also have an # implementation for the "right arrow", but we really want the # suggestion binding when a suggestion is available.) load_auto_suggestion_bindings( self.registry, enable_auto_suggest_bindings & enable_all)
def load_key_bindings(get_search_state=None, enable_abort_and_exit_bindings=False, enable_system_bindings=False, enable_search=False, enable_open_in_editor=False, enable_extra_page_navigation=False, enable_auto_suggest_bindings=False): """ Create a Registry object that contains the default key bindings. :param enable_abort_and_exit_bindings: Filter to enable Ctrl-C and Ctrl-D. :param enable_system_bindings: Filter to enable the system bindings (meta-! prompt and Control-Z suspension.) :param enable_search: Filter to enable the search bindings. :param enable_open_in_editor: Filter to enable open-in-editor. :param enable_open_in_editor: Filter to enable open-in-editor. :param enable_extra_page_navigation: Filter for enabling extra page navigation. (Bindings for up/down scrolling through long pages, like in Emacs or Vi.) :param enable_auto_suggest_bindings: Filter to enable fish-style suggestions. """ assert get_search_state is None or callable(get_search_state) # Accept both Filters and booleans as input. enable_abort_and_exit_bindings = to_cli_filter( enable_abort_and_exit_bindings) enable_system_bindings = to_cli_filter(enable_system_bindings) enable_search = to_cli_filter(enable_search) enable_open_in_editor = to_cli_filter(enable_open_in_editor) enable_extra_page_navigation = to_cli_filter(enable_extra_page_navigation) enable_auto_suggest_bindings = to_cli_filter(enable_auto_suggest_bindings) registry = MergedRegistry([ # Load basic bindings. load_basic_bindings(), load_mouse_bindings(), ConditionalRegistry(load_abort_and_exit_bindings(), enable_abort_and_exit_bindings), ConditionalRegistry(load_basic_system_bindings(), enable_system_bindings), # Load emacs bindings. load_emacs_bindings(), ConditionalRegistry(load_emacs_open_in_editor_bindings(), enable_open_in_editor), ConditionalRegistry( load_emacs_search_bindings(get_search_state=get_search_state), enable_search), ConditionalRegistry(load_emacs_system_bindings(), enable_system_bindings), ConditionalRegistry(load_extra_emacs_page_navigation_bindings(), enable_extra_page_navigation), # Load Vi bindings. load_vi_bindings(get_search_state=get_search_state), ConditionalRegistry(load_vi_open_in_editor_bindings(), enable_open_in_editor), ConditionalRegistry( load_vi_search_bindings(get_search_state=get_search_state), enable_search), ConditionalRegistry(load_vi_system_bindings(), enable_system_bindings), ConditionalRegistry(load_extra_vi_page_navigation_bindings(), enable_extra_page_navigation), # Suggestion bindings. # (This has to come at the end, because the Vi bindings also have an # implementation for the "right arrow", but we really want the # suggestion binding when a suggestion is available.) ConditionalRegistry(load_auto_suggestion_bindings(), enable_auto_suggest_bindings), ]) return registry
def load_key_bindings( get_search_state=None, enable_abort_and_exit_bindings=False, enable_system_bindings=False, enable_search=False, enable_open_in_editor=False, enable_extra_page_navigation=False, enable_auto_suggest_bindings=False): """ Create a Registry object that contains the default key bindings. :param enable_abort_and_exit_bindings: Filter to enable Ctrl-C and Ctrl-D. :param enable_system_bindings: Filter to enable the system bindings (meta-! prompt and Control-Z suspension.) :param enable_search: Filter to enable the search bindings. :param enable_open_in_editor: Filter to enable open-in-editor. :param enable_open_in_editor: Filter to enable open-in-editor. :param enable_extra_page_navigation: Filter for enabling extra page navigation. (Bindings for up/down scrolling through long pages, like in Emacs or Vi.) :param enable_auto_suggest_bindings: Filter to enable fish-style suggestions. """ assert get_search_state is None or callable(get_search_state) # Accept both Filters and booleans as input. enable_abort_and_exit_bindings = to_cli_filter(enable_abort_and_exit_bindings) enable_system_bindings = to_cli_filter(enable_system_bindings) enable_search = to_cli_filter(enable_search) enable_open_in_editor = to_cli_filter(enable_open_in_editor) enable_extra_page_navigation = to_cli_filter(enable_extra_page_navigation) enable_auto_suggest_bindings = to_cli_filter(enable_auto_suggest_bindings) registry = MergedRegistry([ # Load basic bindings. load_basic_bindings(), load_mouse_bindings(), ConditionalRegistry(load_abort_and_exit_bindings(), enable_abort_and_exit_bindings), ConditionalRegistry(load_basic_system_bindings(), enable_system_bindings), # Load emacs bindings. load_emacs_bindings(), ConditionalRegistry(load_emacs_open_in_editor_bindings(), enable_open_in_editor), ConditionalRegistry(load_emacs_search_bindings(get_search_state=get_search_state), enable_search), ConditionalRegistry(load_emacs_system_bindings(), enable_system_bindings), ConditionalRegistry(load_extra_emacs_page_navigation_bindings(), enable_extra_page_navigation), # Load Vi bindings. load_vi_bindings(get_search_state=get_search_state), ConditionalRegistry(load_vi_open_in_editor_bindings(), enable_open_in_editor), ConditionalRegistry(load_vi_search_bindings(get_search_state=get_search_state), enable_search), ConditionalRegistry(load_vi_system_bindings(), enable_system_bindings), ConditionalRegistry(load_extra_vi_page_navigation_bindings(), enable_extra_page_navigation), # Suggestion bindings. # (This has to come at the end, because the Vi bindings also have an # implementation for the "right arrow", but we really want the # suggestion binding when a suggestion is available.) ConditionalRegistry(load_auto_suggestion_bindings(), enable_auto_suggest_bindings), ]) return registry
def __init__( self, registry=None, enable_vi_mode=None, # (`enable_vi_mode` is deprecated.) get_search_state=None, enable_abort_and_exit_bindings=False, enable_system_bindings=False, enable_search=False, enable_open_in_editor=False, enable_extra_page_navigation=False, enable_auto_suggest_bindings=False, enable_all=True): assert registry is None or isinstance(registry, Registry) assert get_search_state is None or callable(get_search_state) # Create registry. self.registry = registry or Registry() # Accept both Filters and booleans as input. enable_abort_and_exit_bindings = to_cli_filter( enable_abort_and_exit_bindings) enable_system_bindings = to_cli_filter(enable_system_bindings) enable_search = to_cli_filter(enable_search) enable_open_in_editor = to_cli_filter(enable_open_in_editor) enable_extra_page_navigation = to_cli_filter( enable_extra_page_navigation) enable_auto_suggest_bindings = to_cli_filter( enable_auto_suggest_bindings) enable_all = to_cli_filter(enable_all) # Load basic bindings. load_basic_bindings(self.registry, enable_all) load_mouse_bindings(self.registry, enable_all) load_abort_and_exit_bindings( self.registry, enable_abort_and_exit_bindings & enable_all) load_basic_system_bindings(self.registry, enable_system_bindings & enable_all) # Load emacs bindings. load_emacs_bindings(self.registry, enable_all) load_emacs_open_in_editor_bindings(self.registry, enable_open_in_editor & enable_all) load_emacs_search_bindings(self.registry, filter=enable_search & enable_all, get_search_state=get_search_state) load_emacs_system_bindings(self.registry, enable_system_bindings & enable_all) load_extra_emacs_page_navigation_bindings( self.registry, enable_extra_page_navigation & enable_all) # Load Vi bindings. load_vi_bindings(self.registry, enable_visual_key=~enable_open_in_editor, filter=enable_all, get_search_state=get_search_state) load_vi_open_in_editor_bindings(self.registry, enable_open_in_editor & enable_all) load_vi_search_bindings(self.registry, filter=enable_search & enable_all, get_search_state=get_search_state) load_vi_system_bindings(self.registry, enable_system_bindings & enable_all) load_extra_vi_page_navigation_bindings( self.registry, enable_extra_page_navigation & enable_all) # Suggestion bindings. # (This has to come at the end, because the Vi bindings also have an # implementation for the "right arrow", but we really want the # suggestion binding when a suggestion is available.) load_auto_suggestion_bindings( self.registry, enable_auto_suggest_bindings & enable_all)