Skip to content

Commit 31a943c

Browse files
Upgrade to prompt_toolkit 0.58
1 parent acdd1b2 commit 31a943c

File tree

6 files changed

+41
-54
lines changed

6 files changed

+41
-54
lines changed

ptpython/history_browser.py

Lines changed: 20 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,13 @@
1717
from prompt_toolkit.layout.containers import HSplit, VSplit, Window, FloatContainer, Float, ConditionalContainer, Container, ScrollOffsets
1818
from prompt_toolkit.layout.controls import BufferControl, FillControl
1919
from prompt_toolkit.layout.dimension import LayoutDimension as D
20-
from prompt_toolkit.layout.highlighters import SearchHighlighter, SelectionHighlighter
2120
from prompt_toolkit.layout.lexers import PygmentsLexer
2221
from prompt_toolkit.layout.margins import Margin, ScrollbarMargin
23-
from prompt_toolkit.layout.processors import Processor, Transformation
22+
from prompt_toolkit.layout.processors import Processor, Transformation, HighlightSearchProcessor, HighlightSelectionProcessor
2423
from prompt_toolkit.layout.screen import Char
2524
from prompt_toolkit.layout.toolbars import ArgToolbar, SearchToolbar
2625
from prompt_toolkit.layout.toolbars import TokenListToolbar
27-
from prompt_toolkit.layout.utils import explode_tokens
26+
from prompt_toolkit.layout.utils import token_list_to_text
2827
from prompt_toolkit.utils import Callback
2928
from pygments.lexers import RstLexer
3029
from pygments.token import Token
@@ -143,9 +142,9 @@ def create_layout(python_input, history_mapping):
143142
Create and return a `Container` instance for the history
144143
application.
145144
"""
146-
highlighters = [
147-
SearchHighlighter(preview_search=True),
148-
SelectionHighlighter()]
145+
processors = [
146+
HighlightSearchProcessor(preview_search=True),
147+
HighlightSelectionProcessor()]
149148

150149
help_window = create_popup_window(
151150
title='History Help',
@@ -154,7 +153,7 @@ def create_layout(python_input, history_mapping):
154153
buffer_name=HELP_BUFFER,
155154
default_char=Char(token=Token),
156155
lexer=PygmentsLexer(RstLexer),
157-
highlighters=highlighters),
156+
input_processors=processors),
158157
right_margins=[ScrollbarMargin()],
159158
scroll_offsets=ScrollOffsets(top=2, bottom=2)))
160159

@@ -170,9 +169,9 @@ def create_layout(python_input, history_mapping):
170169
Window(
171170
content=BufferControl(
172171
buffer_name=HISTORY_BUFFER,
173-
wrap_lines=False,
174172
lexer=PygmentsLexer(PythonLexer),
175-
highlighters=highlighters),
173+
input_processors=processors),
174+
wrap_lines=False,
176175
left_margins=[HistoryMargin(history_mapping)],
177176
scroll_offsets=ScrollOffsets(top=2, bottom=2)),
178177
# Separator.
@@ -182,10 +181,9 @@ def create_layout(python_input, history_mapping):
182181
Window(
183182
content=BufferControl(
184183
buffer_name=DEFAULT_BUFFER,
185-
wrap_lines=False,
186-
highlighters=highlighters,
187-
input_processors=[GrayExistingText(history_mapping)],
184+
input_processors=processors + [GrayExistingText(history_mapping)],
188185
lexer=PygmentsLexer(PythonLexer)),
186+
wrap_lines=False,
189187
left_margins=[ResultMargin(history_mapping)],
190188
scroll_offsets=ScrollOffsets(top=2, bottom=2)),
191189
]),
@@ -244,7 +242,7 @@ class HistoryMargin(Margin):
244242
def __init__(self, history_mapping):
245243
self.history_mapping = history_mapping
246244

247-
def get_width(self, cli):
245+
def get_width(self, cli, ui_content):
248246
return 2
249247

250248
def create_margin(self, cli, window_render_info, width, height):
@@ -289,7 +287,7 @@ class ResultMargin(Margin):
289287
def __init__(self, history_mapping):
290288
self.history_mapping = history_mapping
291289

292-
def get_width(self, cli):
290+
def get_width(self, cli, ui_content):
293291
return 2
294292

295293
def create_margin(self, cli, window_render_info, width, height):
@@ -328,24 +326,15 @@ class GrayExistingText(Processor):
328326
"""
329327
def __init__(self, history_mapping):
330328
self.history_mapping = history_mapping
331-
self._len_before = len(history_mapping.original_document.text_before_cursor)
332-
self._len_after = len(history_mapping.original_document.text_after_cursor)
333-
334-
def apply_transformation(self, cli, document, tokens):
335-
if self._len_before or self._len_after:
336-
tokens = explode_tokens(tokens)
337-
pos_after = len(tokens) - self._len_after
338-
339-
text_before = ''.join(t[1] for t in tokens[:self._len_before])
340-
text_after = ''.join(t[1] for t in tokens[pos_after:])
341-
342-
return Transformation(
343-
document=document,
344-
tokens=explode_tokens([(Token.History.ExistingInput, text_before)] +
345-
tokens[self._len_before:pos_after] +
346-
[(Token.History.ExistingInput, text_after)]))
329+
self._lines_before = len(history_mapping.original_document.text_before_cursor.splitlines())
330+
331+
def apply_transformation(self, cli, document, lineno, source_to_display, tokens):
332+
if (lineno < self._lines_before or
333+
lineno >= self._lines_before + len(self.history_mapping.selected_lines)):
334+
text = token_list_to_text(tokens)
335+
return Transformation(tokens=[(Token.History.ExistingInput, text)])
347336
else:
348-
return Transformation(document, tokens)
337+
return Transformation(tokens=tokens)
349338

350339

351340
class HistoryMapping(object):

ptpython/layout.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,15 @@
44
from __future__ import unicode_literals
55

66
from prompt_toolkit.enums import DEFAULT_BUFFER, SEARCH_BUFFER
7-
from prompt_toolkit.filters import IsDone, HasCompletions, RendererHeightIsKnown, Always, HasFocus, Condition
7+
from prompt_toolkit.filters import IsDone, HasCompletions, RendererHeightIsKnown, HasFocus, Condition
88
from prompt_toolkit.key_binding.vi_state import InputMode
99
from prompt_toolkit.layout.containers import Window, HSplit, VSplit, FloatContainer, Float, ConditionalContainer, ScrollOffsets
1010
from prompt_toolkit.layout.controls import BufferControl, TokenListControl, FillControl
1111
from prompt_toolkit.layout.dimension import LayoutDimension
1212
from prompt_toolkit.layout.lexers import SimpleLexer
1313
from prompt_toolkit.layout.margins import PromptMargin
1414
from prompt_toolkit.layout.menus import CompletionsMenu, MultiColumnCompletionsMenu
15-
from prompt_toolkit.layout.highlighters import SearchHighlighter, SelectionHighlighter, MatchingBracketHighlighter, ConditionalHighlighter
16-
from prompt_toolkit.layout.processors import ConditionalProcessor, AppendAutoSuggestion
15+
from prompt_toolkit.layout.processors import ConditionalProcessor, AppendAutoSuggestion, HighlightSearchProcessor, HighlightSelectionProcessor, HighlightMatchingBracketProcessor
1716
from prompt_toolkit.layout.screen import Char
1817
from prompt_toolkit.layout.toolbars import CompletionsToolbar, ArgToolbar, SearchToolbar, ValidationToolbar, SystemToolbar, TokenListToolbar
1918
from prompt_toolkit.layout.utils import token_list_width
@@ -94,7 +93,7 @@ def goto_next(cli, mouse_event):
9493
if selected:
9594
tokens.append((Token.SetCursorPosition, ''))
9695

97-
tokens.append((token.Status, ' ' * (14 - len(status)), goto_next))
96+
tokens.append((token.Status, ' ' * (13 - len(status)), goto_next))
9897
tokens.append((T, '<' if selected else ''))
9998
tokens.append((T, '\n'))
10099

@@ -266,7 +265,7 @@ def get_prompt(cli):
266265
def get_continuation_prompt(cli, width):
267266
return get_prompt_style().in2_tokens(cli, width)
268267

269-
super(PythonPromptMargin, self).__init__(get_prompt, get_continuation_prompt,
268+
super(PythonPromptMargin, self).__init__(get_prompt, get_continuation_prompt,
270269
show_numbers=Condition(lambda cli: python_input.show_line_numbers))
271270

272271

@@ -478,27 +477,25 @@ def menu_position(cli):
478477
BufferControl(
479478
buffer_name=DEFAULT_BUFFER,
480479
lexer=lexer,
481-
highlighters=[
480+
input_processors=[
481+
ConditionalProcessor(
482+
processor=HighlightSearchProcessor(preview_search=True),
483+
filter=HasFocus(SEARCH_BUFFER),
484+
),
485+
HighlightSelectionProcessor(),
482486
# Show matching parentheses, but only while editing.
483-
ConditionalHighlighter(
484-
highlighter=MatchingBracketHighlighter(chars='[](){}'),
487+
ConditionalProcessor(
488+
processor=HighlightMatchingBracketProcessor(chars='[](){}'),
485489
filter=HasFocus(DEFAULT_BUFFER) & ~IsDone() &
486490
Condition(lambda cli: python_input.highlight_matching_parenthesis)),
487-
ConditionalHighlighter(
488-
highlighter=SearchHighlighter(preview_search=Always()),
489-
filter=HasFocus(SEARCH_BUFFER)),
490-
SelectionHighlighter(),
491-
],
492-
input_processors=[
493491
ConditionalProcessor(
494492
processor=AppendAutoSuggestion(),
495493
filter=~IsDone())
496494
] + extra_buffer_processors,
497495
menu_position=menu_position,
498-
wrap_lines=Condition(lambda cli: python_input.wrap_lines),
499496

500497
# Make sure that we always see the result of an reverse-i-search:
501-
preview_search=Always(),
498+
preview_search=True,
502499
),
503500
left_margins=[PythonPromptMargin(python_input)],
504501
# Scroll offsets. The 1 at the bottom is important to make sure the
@@ -508,6 +505,7 @@ def menu_position(cli):
508505
get_height=(lambda cli: (
509506
None if cli.is_done or python_input.show_exit_confirmation
510507
else input_buffer_height)),
508+
wrap_lines=Condition(lambda cli: python_input.wrap_lines),
511509
)
512510

513511
return HSplit([
@@ -536,7 +534,8 @@ def menu_position(cli):
536534
bottom=1,
537535
content=exit_confirmation(python_input)),
538536
Float(bottom=0, right=0, height=1,
539-
content=meta_enter_message(python_input)),
537+
content=meta_enter_message(python_input),
538+
hide_when_covering_content=True),
540539
Float(bottom=1, left=1, right=0, content=python_sidebar_help(python_input)),
541540
]),
542541
ArgToolbar(),

ptpython/python_input.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ def run():
615615
cli.eventloop.run_in_executor(run)
616616

617617
def on_reset(self, cli):
618-
self.key_bindings_manager.reset()
618+
self.key_bindings_manager.reset(cli)
619619
self.signatures = []
620620

621621
def enter_history(self, cli):

ptpython/repl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
from prompt_toolkit.application import AbortAction
1616
from prompt_toolkit.enums import DEFAULT_BUFFER
17-
from prompt_toolkit.interface import AcceptAction, CommandLineInterface
17+
from prompt_toolkit.interface import AcceptAction
1818
from prompt_toolkit.layout.utils import token_list_width
1919
from prompt_toolkit.shortcuts import create_asyncio_eventloop
2020
from prompt_toolkit.styles import style_from_pygments

ptpython/style.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
from __future__ import unicode_literals
22

33
from pygments.token import Token, Keyword, Name, Comment, String, Operator, Number
4-
from pygments.style import Style
54
from pygments.styles import get_style_by_name, get_all_styles
6-
from prompt_toolkit.styles import default_style_extensions, style_from_dict
5+
from prompt_toolkit.styles import DEFAULT_STYLE_EXTENSIONS, style_from_dict
76
from prompt_toolkit.utils import is_windows, is_conemu_ansi
87

98
__all__ = (
@@ -41,7 +40,7 @@ def generate_style(python_style, ui_style):
4140
assert isinstance(ui_style, dict)
4241

4342
styles = {}
44-
styles.update(default_style_extensions)
43+
styles.update(DEFAULT_STYLE_EXTENSIONS)
4544
styles.update(python_style)
4645
styles.update(ui_style)
4746

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
install_requires = [
2222
'docopt',
2323
'jedi>=0.9.0',
24-
'prompt_toolkit==0.57',
24+
'prompt_toolkit==0.58',
2525
'pygments',
2626
],
2727
entry_points={

0 commit comments

Comments
 (0)