remove prompt_toolkit < v1.0.0 support

As per #980 this removes all of the cased code for dealing with various
versions of prompt_toolkit in favor of supporting only v1.0.0+
This commit is contained in:
Gil Forsyth 2016-05-22 10:07:57 -04:00
parent 68026b2112
commit ae479ce2eb
7 changed files with 20 additions and 121 deletions

View file

@ -15,7 +15,8 @@ Current Developments
**Deprecated:** None
**Removed:** None
**Removed:**
* Special cased code for handling version of prompt_toolkit < v1.0.0
**Fixed:**

View file

@ -43,17 +43,7 @@ class PromptToolkitCompleter(Completer):
def reserve_space(self):
cli = builtins.__xonsh_shell__.shell.prompter.cli
if ptk_version().startswith("1.0"):
# This is the layout for ptk 1.0
window = cli.application.layout.children[0].content.children[1]
else:
#TODO remove after next prompt_toolkit release
try:
#old layout to be removed at next ptk release
window = cli.application.layout.children[1].children[1].content
except AttributeError:
#new layout to become default
window = cli.application.layout.children[1].content
if window and window.render_info:
h = window.render_info.content_height

View file

@ -83,4 +83,3 @@ class PromptToolkitHistoryAdder(Thread):
if buf is None:
break
return buf

View file

@ -5,6 +5,7 @@ import builtins
from prompt_toolkit.key_binding.manager import KeyBindingManager
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.layout.lexers import PygmentsLexer
from prompt_toolkit.shortcuts import print_tokens
from prompt_toolkit.filters import Condition
from prompt_toolkit.styles import PygmentsStyle
from pygments.styles import get_all_styles
@ -19,7 +20,7 @@ from xonsh.pyghooks import (XonshLexer, partial_color_tokenize,
from xonsh.ptk.completer import PromptToolkitCompleter
from xonsh.ptk.history import PromptToolkitHistory
from xonsh.ptk.key_bindings import load_xonsh_bindings
from xonsh.ptk.shortcuts import Prompter, print_tokens
from xonsh.ptk.shortcuts import Prompter
class PromptToolkitShell(BaseShell):
@ -37,12 +38,6 @@ class PromptToolkitShell(BaseShell):
'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)
@ -84,10 +79,8 @@ class PromptToolkitShell(BaseShell):
'enable_history_search': enable_history_search,
'reserve_space_for_menu': 0,
'key_bindings_registry': self.key_bindings_manager.registry,
'display_completions_in_columns': multicolumn
'display_completions_in_columns': multicolumn,
}
if self.new_vi_mode_flag:
prompt_args['vi_mode'] = env.get('VI_MODE')
line = self.prompter.prompt(**prompt_args)
return line

View file

@ -3,6 +3,7 @@ import builtins
import textwrap
from prompt_toolkit.interface import CommandLineInterface
from prompt_toolkit.enums import EditingMode
from prompt_toolkit.utils import DummyContext
from prompt_toolkit.shortcuts import (create_prompt_application,
create_eventloop, create_asyncio_eventloop, create_output)
@ -68,20 +69,11 @@ class Prompter(object):
# Create CommandLineInterface.
if self.cli is None:
if self.major_minor < (0, 57):
kwargs.pop('reserve_space_for_menu', None)
if self.major_minor <= (0, 57):
kwargs.pop('get_rprompt_tokens', None)
kwargs.pop('get_continuation_tokens', None)
# VI_Mode handling changed in prompt_toolkit v1.0
if self.major_minor >= (1, 0):
from prompt_toolkit.enums import EditingMode
if builtins.__xonsh_env__.get('VI_MODE'):
editing_mode = EditingMode.VI
else:
editing_mode = EditingMode.EMACS
kwargs['editing_mode'] = editing_mode
kwargs['vi_mode'] = builtins.__xonsh_env__.get('VI_MODE')
cli = CommandLineInterface(
application=create_prompt_application(message, **kwargs),
eventloop=eventloop,
@ -124,78 +116,3 @@ class Prompter(object):
def reset(self):
"""Resets the prompt and cli to a pristine state on this object."""
self.cli = None
try:
from prompt_toolkit.shortcuts import print_tokens
except ImportError:
import os
import sys
from prompt_toolkit.renderer import print_tokens as renderer_print_tokens
from prompt_toolkit.filters import to_simple_filter
from prompt_toolkit.utils import is_conemu_ansi, is_windows
if is_windows():
from prompt_toolkit.terminal.win32_output import Win32Output
from prompt_toolkit.terminal.conemu_output import ConEmuOutput
else:
from prompt_toolkit.terminal.vt100_output import Vt100_Output
from pygments.style import Style
from prompt_toolkit.styles import Style
from six import PY2
def create_output(stdout=None, true_color=False):
"""
Return an :class:`~prompt_toolkit.output.Output` instance for the command
line.
:param true_color: When True, use 24bit colors instead of 256 colors.
(`bool` or :class:`~prompt_toolkit.filters.SimpleFilter`.)
Notes
-----
This method was forked from the mainline prompt-toolkit repo.
Copyright (c) 2014, Jonathan Slenders, All rights reserved.
This is deprecated and slated for removal after a prompt-toolkit
v0.57+ release.
"""
stdout = stdout or sys.__stdout__
true_color = to_simple_filter(true_color)
if is_windows():
if is_conemu_ansi():
return ConEmuOutput(stdout)
else:
return Win32Output(stdout)
else:
term = os.environ.get('TERM', '')
if PY2:
term = term.decode('utf-8')
return Vt100_Output.from_pty(stdout, true_color=true_color)#, term=term)
def print_tokens(tokens, style=None, true_color=False):
"""
Print a list of (Token, text) tuples in the given style to the output.
E.g.::
style = PygmentsStyle.from_defaults(style_dict={
Token.Hello: '#ff0066',
Token.World: '#884444 italic',
})
tokens = [
(Token.Hello, 'Hello'),
(Token.World, 'World'),
]
print_tokens(tokens, style=style)
:param tokens: List of ``(Token, text)`` tuples.
:param style: :class:`.Style` instance for the color scheme.
:param true_color: When True, use 24bit colors instead of 256 colors.
Notes
-----
This method was forked from the mainline prompt-toolkit repo.
Copyright (c) 2014, Jonathan Slenders, All rights reserved.
This is deprecated and slated for removal after a prompt-toolkit
v0.57+ release.
"""
assert isinstance(style, Style)
output = create_output(true_color=true_color)
renderer_print_tokens(output, tokens, style)

View file

@ -59,10 +59,9 @@ class Shell(object):
if shell_type == 'none':
from xonsh.base_shell import BaseShell as shell_class
elif shell_type == 'prompt_toolkit':
if ptk_version_info()[:2] < (0, 57) or \
ptk_version() == '<0.57': # TODO: remove in future
msg = ('prompt-toolkit version < v0.57 and may not work as '
'expected. Please update.')
if ptk_version_info()[:2] < (1, 0):
msg = ('prompt-toolkit version < v1.0.0 is not supported, '
'xonsh may not work as expected. Please update.')
warn(msg, RuntimeWarning)
from xonsh.ptk.shell import PromptToolkitShell as shell_class
elif shell_type == 'readline':