示例#1
0
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
示例#2
0
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])
示例#3
0
    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)
示例#4
0
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
示例#6
0
    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)