From 30247da2d0936484a11dd2e3bc9a1583d8915ff7 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Sun, 14 Jan 2018 21:35:59 -0500 Subject: [PATCH] Add ptk 2.0 completer --- xonsh/ptk/completer.py | 14 ++++++++++++++ xonsh/ptk/shell.py | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/xonsh/ptk/completer.py b/xonsh/ptk/completer.py index 2c867e454..704f6ed9d 100644 --- a/xonsh/ptk/completer.py +++ b/xonsh/ptk/completer.py @@ -108,3 +108,17 @@ class PromptToolkitCompleter(Completer): else: return LayoutDimension() window._height = comp_height + + +class PromptToolkit2Completer(PromptToolkitCompleter): + """Completer for ptk2. + """ + def suggestion_completion(self, document, line): + """Provides a completion based on the current auto-suggestion.""" + cli = self.shell.prompter.cli + sug = self.hist_suggester.get_suggestion(cli.app.current_buffer, document) + if sug is None: + return None + comp, _, _ = sug.text.partition(' ') + _, _, prev = line.rpartition(' ') + return prev + comp diff --git a/xonsh/ptk/shell.py b/xonsh/ptk/shell.py index da2b46fec..3d58987d9 100644 --- a/xonsh/ptk/shell.py +++ b/xonsh/ptk/shell.py @@ -9,7 +9,7 @@ from prompt_toolkit.layout.lexers import PygmentsLexer from xonsh.platform import ptk_version_info from xonsh.base_shell import BaseShell from xonsh.tools import print_exception, carriage_return -from xonsh.ptk.completer import PromptToolkitCompleter +from xonsh.ptk.completer import PromptToolkitCompleter, PromptToolkit2Completer from xonsh.ptk.history import PromptToolkitHistory from xonsh.ptk.key_bindings import load_xonsh_bindings from xonsh.ptk.shortcuts import get_prompter @@ -337,7 +337,7 @@ class PromptToolkitShell2(PromptToolkitShell): self._first_prompt = True self.prompter = get_prompter() self.history = PromptToolkitHistory() - self.pt_completer = PromptToolkitCompleter( + self.pt_completer = PromptToolkit2Completer( self.completer, self.ctx, self) self.key_bindings = KeyBindings() load_xonsh_bindings(self.key_bindings)