def test_rich_completion(completion, lprefix, ptk_completion, monkeypatch, xonsh_builtins): xonsh_completer_mock = MagicMock() xonsh_completer_mock.complete.return_value = {completion}, lprefix ptk_completer = PromptToolkitCompleter(xonsh_completer_mock, None, None) ptk_completer.reserve_space = lambda: None ptk_completer.suggestion_completion = lambda _, __: None document_mock = MagicMock() document_mock.text = '' document_mock.current_line = '' document_mock.cursor_position_col = 0 monkeypatch.setattr('builtins.aliases', Aliases()) completions = list( ptk_completer.get_completions(document_mock, MagicMock())) if isinstance(completion, RichCompletion) and not ptk_completion: assert completions == [ PTKCompletion(completion, -completion.prefix_len, completion.display, completion.description) ] else: assert completions == [ptk_completion]
def __init__(self, **kwargs): ptk_args = kwargs.pop("ptk_args", {}) super().__init__(**kwargs) if ON_WINDOWS: winutils.enable_virtual_terminal_processing() self._first_prompt = True self.history = ThreadedHistory(PromptToolkitHistory()) ptk_args.setdefault("history", self.history) if not XSH.env.get("XONSH_COPY_ON_DELETE", False): disable_copy_on_deletion() if HAVE_SYS_CLIPBOARD: ptk_args.setdefault("clipboard", PyperclipClipboard()) self.prompter: PromptSession = PromptSession(**ptk_args) self.prompt_formatter = PTKPromptFormatter(self) self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx, self) ptk_bindings = self.prompter.app.key_bindings self.key_bindings = load_xonsh_bindings(ptk_bindings) self._overrides_deprecation_warning_shown = False # Store original `_history_matches` in case we need to restore it self._history_matches_orig = self.prompter.default_buffer._history_matches # 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, ) # Goes at the end, since _MergedKeyBindings objects do not have # an add() function, which is necessary for on_ptk_create events self.key_bindings = merge_key_bindings( [self.key_bindings, load_emacs_shift_selection_bindings()] )
def __init__(self, **kwargs): super().__init__(**kwargs) if ON_WINDOWS: winutils.enable_virtual_terminal_processing() self._first_prompt = True self.history = ThreadedHistory(PromptToolkitHistory()) self.prompter = PromptSession(history=self.history) self.prompt_formatter = PTKPromptFormatter(self.prompter) self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx, self) self.key_bindings = load_xonsh_bindings() # Store original `_history_matches` in case we need to restore it self._history_matches_orig = self.prompter.default_buffer._history_matches # 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, ) # Goes at the end, since _MergedKeyBindings objects do not have # an add() function, which is necessary for on_ptk_create events self.key_bindings = merge_key_bindings( [self.key_bindings, load_emacs_shift_selection_bindings()])
def test_alias_expansion(code, index, expected_args, monkeypatch, xession): xonsh_completer_mock = MagicMock(spec=Completer) xonsh_completer_mock.complete.return_value = set(), 0 ptk_completer = PromptToolkitCompleter(xonsh_completer_mock, None, None) ptk_completer.reserve_space = lambda: None ptk_completer.suggestion_completion = lambda _, __: None monkeypatch.setattr(xession, "aliases", Aliases(gb=["git branch"])) list(ptk_completer.get_completions(Document(code, index), MagicMock())) mock_call = xonsh_completer_mock.complete.call_args args, kwargs = mock_call expected_args["self"] = None expected_args["ctx"] = None assert (signature(Completer.complete).bind( None, *args, **kwargs).arguments == expected_args)
def __init__(self, **kwargs): super().__init__(**kwargs) if ON_WINDOWS: winutils.enable_virtual_terminal_processing() self._first_prompt = True self.history = ThreadedHistory(PromptToolkitHistory()) self.prompter = PromptSession(history=self.history) self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx, self) self.key_bindings = KeyBindings() load_xonsh_bindings(self.key_bindings) # Store original `_history_matches` in case we need to restore it self._history_matches_orig = self.prompter.default_buffer._history_matches # 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, )