コード例 #1
0
ファイル: main.py プロジェクト: wasilak/influx-prompt
    def _build_cli(self):
        layout = create_prompt_layout(
            message='{0}> '.format(self.args['username']),
            lexer=PygmentsLexer(SqlLexer),
        )

        buf = Buffer(completer=self.completer,
                     history=self.history,
                     complete_while_typing=Always(),
                     accept_action=AcceptAction.RETURN_DOCUMENT)

        key_binding_manager = KeyBindingManager(
            enable_abort_and_exit_bindings=True, )

        application = Application(
            layout=layout,
            buffer=buf,
            key_bindings_registry=key_binding_manager.registry,
            on_exit=AbortAction.RAISE_EXCEPTION,
            on_abort=AbortAction.RETRY,
            ignore_case=True)

        cli = CommandLineInterface(application=application,
                                   eventloop=self.eventloop)

        return cli
コード例 #2
0
def create_cli(message='',
               multiline=False,
               is_password=False,
               vi_mode=False,
               lexer=None,
               enable_system_prompt=False,
               enable_open_in_editor=False,
               validator=None,
               completer=None,
               style=None,
               history=None,
               get_bottom_toolbar_tokens=None):

    # Create history instance.
    if history is None:
        history = History()

    # Load all key bindings.
    manager = KeyBindingManager(enable_vi_mode=vi_mode,
                                enable_system_prompt=enable_system_prompt,
                                enable_open_in_editor=enable_open_in_editor)

    # Create interface.
    return CommandLineInterface(
        layout=create_default_layout(message=message, lexer=lexer, is_password=is_password,
                                     reserve_space_for_menu=(completer is not None),
                                     get_bottom_toolbar_tokens=get_bottom_toolbar_tokens),
        buffer=Buffer(
            is_multiline=multiline,
            history=history,
            validator=validator,
            completer=completer,
        ),
        key_bindings_registry=manager.registry,
        style=style)
コード例 #3
0
ファイル: editor.py プロジェクト: singajeet/ide
class KeyHandlers(object):
    """Contains all handlers registered with key bindings
    """

    __single_instance = None
    __key_binding_manager = KeyBindingManager(
            enable_abort_and_exit_bindings=bool(egc.KB_ABORT_EXIT_BIND),
            enable_system_bindings=bool(egc.KB_SYSTEM_BIND),
            enable_search=bool(egc.KB_SEARCH),
            enable_open_in_editor=bool(egc.KB_OPEN_IN_EDITOR),
            enable_extra_page_navigation=bool(egc.KB_PAGE_SCROLL),
            enable_auto_suggest_bindings=bool(egc.KB_AUTO_SUGGEST)
            )
    registry = __key_binding_manager.registry

    def __new__(cls):
        """docstring for __new__"""
        if cls != type(cls.__single_instance):
            cls.__single_instance = object.__new__(cls)
        return cls.__single_instance

    def get_key_binding_manager(self):
        """docstring for get_key_binding_manager"""
        return KeyHandlers.__key_binding_manager

    def get_key_binding_registry(self):
        """docstring for get_key_binding_registry"""
        return KeyHandlers.registry
コード例 #4
0
def get_key_manager(set_long_options, get_long_options, set_fuzzy_match,
                    get_fuzzy_match):
    """
    Create and initialize keybinding manager
    :return: KeyBindingManager
    """

    assert callable(set_long_options)
    assert callable(get_long_options)
    assert callable(set_fuzzy_match)
    assert callable(get_fuzzy_match)

    manager = KeyBindingManager(enable_system_bindings=True)

    @manager.registry.add_binding(Keys.F2)
    def _(event):
        """
        When F2 has been pressed, fill in the "help" command.
        """
        event.cli.current_buffer.insert_text("help")

    @manager.registry.add_binding(Keys.F3)
    def _(_):
        """
        Enable/Disable long option name suggestion.
        """
        set_long_options(not get_long_options())

    @manager.registry.add_binding(Keys.F4)
    def _(_):
        """
        Enable/Disable fuzzy matching.
        """
        set_fuzzy_match(not get_fuzzy_match())

    @manager.registry.add_binding(Keys.F10)
    def _(event):
        """
        When F10 has been pressed, quit.
        """
        # Unused parameters for linter.
        raise EOFError

    @manager.registry.add_binding(Keys.ControlSpace)
    def _(event):
        """
        Initialize autocompletion at cursor.

        If the autocompletion menu is not showing, display it with the
        appropriate completions for the context.

        If the menu is showing, select the next completion.
        """
        b = event.cli.current_buffer
        if b.complete_state:
            b.complete_next()
        else:
            event.cli.start_completion(select_first=False)

    return manager
コード例 #5
0
def main():
    # We start with a `KeyBindingManager` instance, because this will already
    # nicely load all the default key bindings.
    key_bindings_manager = KeyBindingManager()

    # We add a custom key binding to space.
    @key_bindings_manager.registry.add_binding(' ')
    def _(event):
        """
        When space is pressed, we check the word before the cursor, and
        autocorrect that.
        """
        b = event.cli.current_buffer
        w = b.document.get_word_before_cursor()

        if w is not None:
            if w in corrections:
                b.delete_before_cursor(count=len(w))
                b.insert_text(corrections[w])

        b.insert_text(' ')

    # Read input.
    print('Say something')
    text = get_input(key_bindings_registry=key_bindings_manager.registry)
    print('You said: %s' % text)
コード例 #6
0
def main():
    # We start with a `KeyBindingManager` instance, because this will already
    # nicely load all the default key bindings.
    key_bindings_manager = KeyBindingManager()

    # Add our own key binding to the registry of the key bindings manager.
    @key_bindings_manager.registry.add_binding(Keys.F4)
    def _(event):
        """
        When F4 has been pressed. Insert "hello world" as text.
        """
        event.cli.current_buffer.insert_text('hello world')

    @key_bindings_manager.registry.add_binding('x', 'y')
    def _(event):
        """
        (Useless, but for demoing.)
        Typing 'xy' will insert 'z'.

        Note that when you type for instance 'xa', the insertion of 'x' is
        postponed until the 'a' is typed. because we don't know earlier whether
        or not a 'y' will follow.
        """
        event.cli.current_buffer.insert_text('z')

    # Read input.
    print('Press F4 to insert "hello world", type "xy" to insert "z":')
    text = get_input(key_bindings_registry=key_bindings_manager.registry)
    print('You said: %s' % text)
コード例 #7
0
 def __init__(self, **kwargs):
     super().__init__(**kwargs)
     self.history = setup_history()
     self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx)
     self.key_bindings_manager = KeyBindingManager(
         enable_search=True, enable_abort_and_exit_bindings=True)
     load_xonsh_bindings(self.key_bindings_manager)
コード例 #8
0
def create_cli(eventloop,
               message='',
               multiline=False,
               is_password=False,
               vi_mode=False,
               lexer=None,
               enable_system_prompt=False,
               enable_open_in_editor=False,
               validator=None,
               completer=None,
               style=None,
               history=None,
               get_prompt_tokens=None,
               get_bottom_toolbar_tokens=None,
               extra_input_processors=None,
               key_bindings_registry=None,
               output=None,
               on_abort=AbortAction.RAISE_EXCEPTION,
               on_exit=AbortAction.RAISE_EXCEPTION,
               on_accept=AcceptAction.RETURN_DOCUMENT):
    """
    Create a `CommandLineInterface` instance.
    """
    assert isinstance(eventloop, EventLoop)

    # Create history instance.
    if history is None:
        history = History()

    # Use default registry from KeyBindingManager if none was given.
    if key_bindings_registry is None:
        key_bindings_registry = KeyBindingManager(
            enable_vi_mode=vi_mode,
            enable_system_prompt=enable_system_prompt,
            enable_open_in_editor=enable_open_in_editor).registry

    # Create interface.
    return CommandLineInterface(
        eventloop=eventloop,
        layout=create_default_layout(
            message=message,
            lexer=lexer,
            is_password=is_password,
            reserve_space_for_menu=(completer is not None),
            get_prompt_tokens=get_prompt_tokens,
            get_bottom_toolbar_tokens=get_bottom_toolbar_tokens,
            extra_input_processors=extra_input_processors),
        buffer=Buffer(
            is_multiline=(Always() if multiline else Never()),
            history=history,
            validator=validator,
            completer=completer,
        ),
        key_bindings_registry=key_bindings_registry,
        style=style,
        output=output,
        on_abort=on_abort,
        on_exit=on_exit)
コード例 #9
0
    def test_bindings(self):
        mngr = KeyBindingManager(enable_search=True,
                                 enable_abort_and_exit_bindings=True,
                                 enable_system_bindings=True,
                                 enable_open_in_editor=True)
        bind_keys(mngr.registry)

        self.assertTrue(
            'on_backspace' in handlers_for_key(mngr, Keys.Backspace))
        self.assertTrue('on_tab' in handlers_for_key(mngr, Keys.Tab))
コード例 #10
0
ファイル: prompt_toolkit_shell.py プロジェクト: melund/xonsh
 def __init__(self, **kwargs):
     super().__init__(**kwargs)
     self.history = setup_history()
     self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx)
     self.key_bindings_manager = KeyBindingManager(
         enable_auto_suggest_bindings=True,
         enable_search=True,
         enable_abort_and_exit_bindings=True,
         enable_vi_mode=Condition(lambda cli: builtins.__xonsh_env__.get('VI_MODE')),
         enable_open_in_editor=True)
     load_xonsh_bindings(self.key_bindings_manager)
コード例 #11
0
ファイル: shell.py プロジェクト: anddam/xonsh
 def __init__(self, **kwargs):
     super().__init__(**kwargs)
     self.prompter = Prompter()
     self.history = PromptToolkitHistory()
     self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx)
     key_bindings_manager_args = {
         'enable_auto_suggest_bindings': True,
         'enable_search': True,
         'enable_abort_and_exit_bindings': True,
         }
     self.key_bindings_manager = KeyBindingManager(**key_bindings_manager_args)
     load_xonsh_bindings(self.key_bindings_manager)
コード例 #12
0
def main():
    hidden = [True]  # Nonlocal
    key_bindings_manager = KeyBindingManager()

    @key_bindings_manager.registry.add_binding(Keys.ControlT)
    def _(event):
        ' When ControlT has been pressed, toggle visibility. '
        hidden[0] = not hidden[0]

    print('Type Control-T to toggle password visible.')
    password = get_input('Password: '******'You said: %s' % password)
コード例 #13
0
ファイル: azureshell.py プロジェクト: yokawasa/azure-shell
    def create_cli(self):
        ## KeyBindings configuration
        key_binding = KeyBindingManager(enable_search=True,
                                        enable_abort_and_exit_bindings=True,
                                        enable_system_bindings=True,
                                        enable_auto_suggest_bindings=True,
                                        enable_open_in_editor=False)

        ## Buffer configuration
        default_buffer = Buffer(history=self.file_history,
                                auto_suggest=AutoSuggestFromHistory(),
                                enable_history_search=True,
                                completer=self.completer,
                                complete_while_typing=Always(),
                                accept_action=AcceptAction.RETURN_DOCUMENT)

        ## Style configuration
        try:
            style = get_style_by_name(self._config.highlighter_style)
        except ClassNotFound:
            style = get_style_by_name('native')

        styles = {}
        styles.update(style.styles)
        styles.update(default_style_extensions)
        styles.update({
            Token.Menu.Completions.Completion: 'bg:#003fff #ffffff',
            Token.Menu.Completions.Completion.Current: 'bg:#5ab300 #000000',
            Token.Menu.Completions.Meta.Current: 'bg:#5ab300 #ffffff',
            Token.Menu.Completions.Meta: 'bg:#ffffff #000000',
            Token.Scrollbar: 'bg:#003fff',
            Token.Scrollbar.Button: 'bg:#003333',
        })
        prompt_style = style_from_dict(styles)

        ## Application
        application = Application(
            layout=self.create_cli_layout(),
            mouse_support=False,
            style=prompt_style,
            buffer=default_buffer,
            on_abort=AbortAction.RETRY,
            on_exit=AbortAction.RAISE_EXCEPTION,
            on_input_timeout=self.on_input_timeout,
            key_bindings_registry=key_binding.registry,
        )

        cli = CommandLineInterface(application=application,
                                   eventloop=create_eventloop())
        return cli
コード例 #14
0
ファイル: repl.py プロジェクト: boseca/crash
def loop(cmd, history_file):
    key_binding_manager = KeyBindingManager(
        enable_search=True, enable_abort_and_exit_bindings=True)
    layout = create_prompt_layout(
        message=u'cr> ',
        multiline=True,
        lexer=SqlLexer,
        extra_input_processors=[
            ConditionalProcessor(
                processor=HighlightMatchingBracketProcessor(chars='[](){}'),
                filter=HasFocus(DEFAULT_BUFFER) & ~IsDone())
        ])
    buffer = CrashBuffer(history=TruncatedFileHistory(
        history_file, max_length=MAX_HISTORY_LENGTH),
                         accept_action=AcceptAction.RETURN_DOCUMENT,
                         completer=SQLCompleter(cmd))
    buffer.complete_while_typing = lambda cli=None: cmd.should_autocomplete()
    application = Application(
        layout=layout,
        buffer=buffer,
        style=PygmentsStyle.from_defaults(pygments_style_cls=CrateStyle),
        key_bindings_registry=key_binding_manager.registry,
        editing_mode=_get_editing_mode(),
        on_exit=AbortAction.RAISE_EXCEPTION,
        on_abort=AbortAction.RETRY,
    )
    eventloop = create_eventloop()
    output = create_output()
    cli = CommandLineInterface(application=application,
                               eventloop=eventloop,
                               output=output)

    def get_num_columns_override():
        return output.get_size().columns

    cmd.get_num_columns = get_num_columns_override

    while True:
        try:
            doc = cli.run(reset_current_buffer=True)
            if doc:
                cmd.process(doc.text)
        except KeyboardInterrupt:
            cmd.logger.warn(
                "Query not cancelled. Run KILL <jobId> to cancel it")
        except EOFError:
            cmd.logger.warn(u'Bye!')
            return
コード例 #15
0
ファイル: shell.py プロジェクト: aweltsch/xonsh
 def __init__(self, **kwargs):
     super().__init__(**kwargs)
     self.prompter = Prompter()
     self.history = PromptToolkitHistory()
     self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx)
     key_bindings_manager_args = {
         'enable_auto_suggest_bindings': True,
         'enable_search': True,
         'enable_abort_and_exit_bindings': True,
     }
     self.key_bindings_manager = KeyBindingManager(
         **key_bindings_manager_args)
     load_xonsh_bindings(self.key_bindings_manager)
     # This assumes that PromptToolkitShell is a singleton
     events.on_ptk_create.fire(self.prompter, self.history,
                               self.pt_completer, self.key_bindings_manager)
コード例 #16
0
def main():
    if len(sys.argv) > 1:
        logout()
    else:
        studentID = raw_input("Please Input Your Student ID:")
        hidden = [True]  # Nonlocal
        key_bindings_manager = KeyBindingManager()

        @key_bindings_manager.registry.add_binding(Keys.ControlT)
        def _(event):
            hidden[0] = not hidden[0]

        passwd = prompt('Password: ',
                        is_password=Condition(lambda cli: hidden[0]),
                        key_bindings_registry=key_bindings_manager.registry)
        login(studentID, passwd)
コード例 #17
0
ファイル: console.py プロジェクト: bopopescu/icsw
    def __init__(self, opt_ns, srv_c, inst_xml):
        manager = KeyBindingManager()  # Start with the `KeyBindingManager`.

        self.srv_text = ServiceOutput(opt_ns, srv_c, inst_xml)
        layout = HSplit(
            [
                # One window that holds the BufferControl with the default buffer on the
                # left.
                Window(
                    height=D.exact(1),
                    content=TokenListControl(
                        self.get_title_line,
                        default_char=Char(" ", token=Token.String.ICSW.Header)
                    )
                ),
                Window(
                    height=D.exact(1),
                    content=FillControl('-', token=Token.Line)
                ),
                # Display the text 'Hello world' on the right.
                Window(
                    content=TokenListControl(
                        self.get_icsw_output,
                    )
                ),
            ]
        )

        self._updating = False

        @manager.registry.add_binding(Keys.ControlC, eager=True)
        @manager.registry.add_binding("q", eager=True)
        def _handler_data(event):
            event.cli.set_return_value(0)

        our_style = style_from_dict(logging_tools.get_icsw_prompt_styles())
        application = Application(
            layout=layout,
            use_alternate_screen=True,
            style=our_style,
            on_input_timeout=self.input_timeout,
            key_bindings_registry=manager.registry,
        )
        event_loop = create_eventloop()
        self.application = application
        self.event_loop = event_loop
コード例 #18
0
def key_bindings_registry():
    manager = KeyBindingManager()
    registry = manager.registry

    @registry.add_binding(Keys.ControlQ)
    def _(event):
        event.cli.set_return_value(None)
    
    @registry.add_binding(Keys.Tab)
    def __(event):
        buff = event.cli.current_buffer
        doc = buff.document
        if doc.cursor_position_row == 0:
            _all_imports = imports(doc.text)
            if _all_imports:
                buff.delete_before_cursor(len(doc.text))
                buff.insert_text('\n'.join('import "%s"' %i for i in _all_imports))
                return
        
        if doc.current_line.strip() == 'main':
            buff.delete_before_cursor(len(doc.current_line))
            buff.insert_text(_main, move_cursor=False)
            buff.cursor_down(count=1)
            buff.cursor_right(count=4)
            
            return
        
        buff.insert_text(' ' * 4)
        
    
    @registry.add_binding(Keys.F4)
    def ___(event):
        
        buff = event.cli.current_buffer
        text = buff.document.text
        new_text = ''
        if text:
            new_text = '\n'.join('import "%s"' % t for t in text.split()) + '\n'
            
        buff.delete_before_cursor(len(text))
        buff.insert_text(new_text,  move_cursor=True)
        #buff.cursor_down(1 + len(text.split()))
        #buff.cursor_right(4)

    return registry
コード例 #19
0
def get_key_manager(set_long_options, get_long_options):  #pragma: no cover
    assert callable(set_long_options)
    assert callable(get_long_options)

    manager = KeyBindingManager(enable_search=True,
                                enable_system_bindings=True,
                                enable_abort_and_exit_bindings=True)

    @manager.registry.add_binding(Keys.F2)
    def opt_help(event):
        """
    When F2 has been pressed, fill in the "help" command.
    """
        event.cli.current_buffer.insert_text("help")

    @manager.registry.add_binding(Keys.F3)
    def opt_set_options_length(_):
        """
    Enable/Disable long option name suggestion.
    """
        set_long_options(not get_long_options())

    @manager.registry.add_binding(Keys.F10)
    def opt_exit(_):
        """
    When F10 has been pressed, quit.
    """
        # Unused parameters for linter.
        raise EOFError

    @manager.registry.add_binding(Keys.ControlSpace)
    def opt_auto_complete(event):
        """
    Initialize autocompletion at cursor.  If the autocompletion menu is not
    showing, display it with the appropriate completions for the context.  If
    the menu is showing, select the next completion.
    """
        buf = event.cli.current_buffer
        if buf.complete_state:
            buf.complete_next()
        else:
            event.cli.start_completion(select_first=False)

    return manager
コード例 #20
0
ファイル: musixli.py プロジェクト: yathartha1/MusixLI
    def __init__(self):
        def get_toolbar(self):
            return [(Token.Toolbar.Status.Key, '[msx] Help      [ctrl+q] Exit')
                    ]

        updated_style = style_from_pygments(
            TangoStyle, {
                Token.Menu.Completions.Completion.Current:
                'bg:#acba36 #000000',
                Token.Menu.Completions.Completion: 'bg:#008888 #ffffff',
                Token.Menu.Completions.ProgressBar: 'bg:#acba36',
                Token.Scrollbar: 'bg:#acba36',
                Token.Scrollbar.Button: 'bg:#003333',
                Token.Toolbar: '#ffffff bg:#333333',
                Token: '#00ffff bold',
                Token.Toolbar.Status.Key: '#ff0000'
            })
        history = InMemoryHistory()
        layout = create_default_layout(message=u'musixli:$>> ',
                                       get_bottom_toolbar_tokens=get_toolbar)
        cli_buffer = Buffer(history=history,
                            auto_suggest=AutoSuggestFromHistory(),
                            enable_history_search=True,
                            completer=self.musix_completer,
                            complete_while_typing=Always(),
                            accept_action=AcceptAction.RETURN_DOCUMENT)
        loop = create_eventloop()
        self.manager = KeyBindingManager()

        @self.manager.registry.add_binding(Keys.ControlQ, eager=True)
        def exit_(event):
            sys.exit()

        application = Application(
            key_bindings_registry=self.manager.registry,
            layout=layout,
            mouse_support=False,
            buffer=cli_buffer,
            style=updated_style,
            ignore_case=True,
        )
        self.cli = CommandLineInterface(application=application,
                                        eventloop=loop)
コード例 #21
0
    def __init__(self, context, plugin, usagelogger):
        self._ctx = context
        self._command_registry = self._ctx.registry
        self._plugin = plugin
        self._blacklist = self._plugin.getBlacklistPlugin()

        self._status_bar = self._plugin.get_status_bar(context)
        self._manager = KeyBindingManager(
            enable_abort_and_exit_bindings=True,
            enable_system_bindings=True,
            enable_search=True,
            enable_auto_suggest_bindings=True,
        )
        self._registry = self._manager.registry
        self._cli = None
        self._suggestor = AutoSuggestFromHistory()
        self._completer = ShellCompleter(self._command_registry)
        self._command_registry.register_listener(self)
        self._usagelogger = usagelogger
コード例 #22
0
def key_bindings_registry():
    #binding the registry keys to action for handling reactive state change
    manager = KeyBindingManager()
    registry = manager.registry

    @registry.add_binding(Keys.ControlQ)
    def _(event):
        event.cli.set_return_value(None)

    @registry.add_binding(Keys.Tab)
    def _R(event):
        buff = event.cli.current_buffer
        buff.insert_text(' ' * 4)

    @registry.add_binding(Keys.F4)
    def ___(event):
        buff = event.cli.current_buffer
        buff.always_multiline = not buff.always_multiline

    return registry
コード例 #23
0
ファイル: key_bindings.py プロジェクト: halfdreamer/pgcli
def pgcli_bindings(vi_mode=False):
    """
    Custom key bindings for pgcli.
    """
    key_binding_manager = KeyBindingManager(enable_vi_mode=vi_mode)

    @key_binding_manager.registry.add_binding(Keys.F2)
    def _(event):
        """
        Enable/Disable SmartCompletion Mode.
        """
        _logger.debug('Detected F2 key.')
        buf = event.cli.current_buffer
        buf.completer.smart_completion = not buf.completer.smart_completion

    @key_binding_manager.registry.add_binding(Keys.F3)
    def _(event):
        """
        Enable/Disable Multiline Mode.
        """
        _logger.debug('Detected F3 key.')
        buf = event.cli.current_buffer
        buf.always_multiline = not buf.always_multiline

    @key_binding_manager.registry.add_binding(Keys.F4)
    def _(event):
        """
        Toggle between Vi and Emacs mode.
        """
        _logger.debug('Detected F4 key.')
        key_binding_manager.enable_vi_mode = not key_binding_manager.enable_vi_mode

    @key_binding_manager.registry.add_binding(Keys.ControlSpace)
    def _(event):
        """
        Force autocompletion at cursor.
        """
        _logger.debug('Detected <C-Space> key.')
        event.cli.current_buffer.complete_next()

    return key_binding_manager
コード例 #24
0
ファイル: keys.py プロジェクト: cyblue9/github-trending
    def _create_key_manager(self):
        """Create and initialize the keybinding manager.

        :rtype: :class:`prompt_toolkit.key_binding.manager.
            KeyBindingManager`
        :return: An instance of `prompt_toolkit.key_binding.manager.
            KeyBindingManager`.
        """
        self.manager = KeyBindingManager(enable_search=True,
                                         enable_abort_and_exit_bindings=True,
                                         enable_system_bindings=True,
                                         enable_auto_suggest_bindings=True)

        @self.manager.registry.add_binding(Keys.F10)
        def handle_f10(_):
            """Quit when the `F10` key is pressed.

            :type _: :class:`prompt_toolkit.Event`
            :param _: (Unused)

            :raises: :class:`EOFError` to quit the app.
            """
            raise EOFError

        @self.manager.registry.add_binding(Keys.ControlSpace)
        def handle_ctrl_space(event):
            """Initialize autocompletion at the cursor.

            If the autocompletion menu is not showing, display it with the
            appropriate completions for the context.

            If the menu is showing, select the next completion.

            :type event: :class:`prompt_toolkit.Event`
            :param event: An instance of `prompt_toolkit.Event`.
            """
            b = event.cli.current_buffer
            if b.complete_state:
                b.complete_next()
            else:
                event.cli.start_completion(select_first=False)
コード例 #25
0
ファイル: shell.py プロジェクト: kevindwei/xonsh
 def __init__(self, **kwargs):
     super().__init__(**kwargs)
     if ON_WINDOWS:
         winutils.enable_virtual_terminal_processing()
     self._first_prompt = True
     self.prompter = Prompter()
     self.history = PromptToolkitHistory()
     self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx, self)
     key_bindings_manager_args = {
         'enable_auto_suggest_bindings': True,
         'enable_search': True,
         'enable_abort_and_exit_bindings': True,
     }
     self.key_bindings_manager = KeyBindingManager(**key_bindings_manager_args)
     load_xonsh_bindings(self.key_bindings_manager)
     # This assumes that PromptToolkitShell is a singleton
     events.on_ptk_create.fire(
         prompter=self.prompter,
         history=self.history,
         completer=self.pt_completer,
         bindings=self.key_bindings_manager,
     )
コード例 #26
0
def mycli_bindings():

    key_binding_manager = KeyBindingManager(
        enable_open_in_editor=True,
        enable_system_bindings=True,
        enable_auto_suggest_bindings=True,
        enable_search=True,
        enable_abort_and_exit_bindings=True)

    @key_binding_manager.registry.add_binding(Keys.Tab)
    def _(event):
        """
        Force autocompletion at cursor.
        """
        #print('Detected <Tab> key.')
        b = event.cli.current_buffer
        #print b.complete_state
        if b.complete_state:
            b.complete_next()
        else:
            event.cli.start_completion(select_first=True)

    return key_binding_manager
コード例 #27
0
ファイル: shell.py プロジェクト: mwiebe/xonsh
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.prompter = Prompter()
        self.history = PromptToolkitHistory()
        self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx)

        key_bindings_manager_args = {
            'enable_auto_suggest_bindings': True,
            'enable_search': True,
            'enable_abort_and_exit_bindings': True,
            'enable_open_in_editor': True,
        }
        major, minor = ptk_version_info()[:2]
        self.new_vi_mode_flag = (major, minor) >= (1, 0) \
                                and ptk_version() != '<0.57'
        if not self.new_vi_mode_flag:
            # enable_vi_mode is deprecated acoording to prompt_toolset 1.0 document.
            key_bindings_manager_args['enable_vi_mode'] = Condition(
                lambda cli: builtins.__xonsh_env__.get('VI_MODE'))

        self.key_bindings_manager = KeyBindingManager(
            **key_bindings_manager_args)
        load_xonsh_bindings(self.key_bindings_manager)
コード例 #28
0
ファイル: keys.py プロジェクト: QuantumEnergyE/netcli
def get_key_manager(set_long_options, get_long_options, set_fuzzy_match,
                    get_fuzzy_match):
    assert callable(set_long_options)
    assert callable(get_long_options)
    assert callable(set_fuzzy_match)
    assert callable(get_fuzzy_match)

    manager = KeyBindingManager(enable_search=True,
                                enable_system_bindings=True,
                                enable_abort_and_exit_bindings=True)

    @manager.registry.add_binding(Keys.F2)
    def _(event):
        click.echo_via_pager(help())

    @manager.registry.add_binding(Keys.F3)
    def _(_):
        set_long_options(not get_long_options())

    @manager.registry.add_binding(Keys.F4)
    def _(_):
        set_fuzzy_match(not get_fuzzy_match())

    @manager.registry.add_binding(Keys.F10)
    def _(event):
        raise EOFError

    @manager.registry.add_binding(Keys.ControlSpace)
    def _(event):
        b = event.cli.current_buffer
        if b.complete_state:
            b.complete_next()
        else:
            event.cli.start_completion(select_first=False)

    return manager
コード例 #29
0
""" makes all the key bindings for the app """
from __future__ import print_function

from prompt_toolkit.key_binding.manager import KeyBindingManager
from prompt_toolkit.filters import Filter
from prompt_toolkit.keys import Keys
from prompt_toolkit import prompt

import azclishell.configuration

manager = KeyBindingManager(
    enable_system_bindings=True,
    enable_auto_suggest_bindings=True,
)
registry = manager.registry

_SECTION = 1

PROMPTING = False
EXAMPLE_REPL = False
SHOW_DEFAULT = False
SYMBOLS = False

class _PromptFilter(Filter):
    def __call__(self, *a, **kw):
        return not PROMPTING

class _ExampleFilter(Filter):
    def __call__(self, *a, **kw):
        return not EXAMPLE_REPL
コード例 #30
0
import sys
import os
from prompt_toolkit import Application, CommandLineInterface, AbortAction
from prompt_toolkit.key_binding.manager import KeyBindingManager
from prompt_toolkit.keys import Keys
from prompt_toolkit.shortcuts import create_eventloop

from prompt_toolkit.styles import PygmentsStyle

from vault_shell.vault_commandhelper import VaultCommandHelper
from vault_shell.style import VaultStyle
from vault_shell.layout import VaultLayout
from vault_shell.layout import VaultBuffer

VaultKeyBinder = KeyBindingManager(enable_search=True,
                                   enable_abort_and_exit_bindings=True,
                                   enable_system_bindings=True,
                                   enable_auto_suggest_bindings=True)
manager = KeyBindingManager.for_prompt()


@manager.registry.add_binding(Keys.ControlQ)
def _controlQKey(event):
    def print_hello():
        print "Key pressed"

    event.cli.run_in_terminal(print_hello)


def run():
    cli_buffer = VaultBuffer()
    vault_layout = VaultLayout(multiwindow=True)