Python prompt_toolkit.filters.Condition() Examples
The following are 23
code examples of prompt_toolkit.filters.Condition().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
prompt_toolkit.filters
, or try the search function
.
Example #1
Source File: python_input.py From ptpython with BSD 3-Clause "New" or "Revised" License | 6 votes |
def _create_buffer(self) -> Buffer: """ Create the `Buffer` for the Python input. """ python_buffer = Buffer( name=DEFAULT_BUFFER, complete_while_typing=Condition(lambda: self.complete_while_typing), enable_history_search=Condition(lambda: self.enable_history_search), tempfile_suffix=".py", history=self.history, completer=ThreadedCompleter(self._completer), validator=ConditionalValidator( self._validator, Condition(lambda: self.enable_input_validation) ), auto_suggest=ConditionalAutoSuggest( ThreadedAutoSuggest(AutoSuggestFromHistory()), Condition(lambda: self.enable_auto_suggest), ), accept_handler=self._accept_handler, on_text_changed=self._on_input_timeout, ) return python_buffer
Example #2
Source File: layout.py From pymux with BSD 3-Clause "New" or "Revised" License | 6 votes |
def __init__(self, client_state): def get_message(): # If there is a message to be shown for this client, show that. if client_state.message: return client_state.message else: return '' def get_tokens(): message = get_message() if message: return FormattedText([ ('class:message', message), ('[SetCursorPosition]', ''), ('class:message', ' '), ]) else: return '' @Condition def is_visible(): return bool(get_message()) super(MessageToolbar, self).__init__(get_tokens)
Example #3
Source File: layout.py From pymux with BSD 3-Clause "New" or "Revised" License | 6 votes |
def _build_layout(self): " Rebuild a new Container object and return that. " logger.info('Rebuilding layout.') if not self.pymux.arrangement.windows: # No Pymux windows in the arrangement. return Window() active_window = self.pymux.arrangement.get_active_window() # When zoomed, only show the current pane, otherwise show all of them. if active_window.zoom: return to_container(_create_container_for_process( self.pymux, active_window, active_window.active_pane, zoom=True)) else: window = self.pymux.arrangement.get_active_window() return HSplit([ # Some spacing for the top status bar. ConditionalContainer( content=Window(height=1), filter=Condition(lambda: self.pymux.enable_pane_status)), # The actual content. _create_split(self.pymux, window, window.root) ])
Example #4
Source File: basic.py From android_universal with MIT License | 6 votes |
def load_auto_suggestion_bindings(): """ Key bindings for accepting auto suggestion text. """ registry = Registry() handle = registry.add_binding suggestion_available = Condition( lambda cli: cli.current_buffer.suggestion is not None and cli.current_buffer.document.is_cursor_at_the_end) @handle(Keys.ControlF, filter=suggestion_available) @handle(Keys.ControlE, filter=suggestion_available) @handle(Keys.Right, filter=suggestion_available) def _(event): " Accept suggestion. " b = event.current_buffer suggestion = b.suggestion if suggestion: b.insert_text(suggestion.text) return registry
Example #5
Source File: basic.py From android_universal with MIT License | 6 votes |
def load_basic_system_bindings(): """ Basic system bindings (For both Emacs and Vi mode.) """ registry = Registry() suspend_supported = Condition( lambda cli: suspend_to_background_supported()) @registry.add_binding(Keys.ControlZ, filter=suspend_supported) def _(event): """ Suspend process to background. """ event.cli.suspend_to_background() return registry
Example #6
Source File: basic.py From android_universal with MIT License | 6 votes |
def load_abort_and_exit_bindings(): """ Basic bindings for abort (Ctrl-C) and exit (Ctrl-D). """ registry = Registry() handle = registry.add_binding @handle(Keys.ControlC) def _(event): " Abort when Control-C has been pressed. " event.cli.abort() @Condition def ctrl_d_condition(cli): """ Ctrl-D binding is only active when the default buffer is selected and empty. """ return (cli.current_buffer_name == DEFAULT_BUFFER and not cli.current_buffer.text) handle(Keys.ControlD, filter=ctrl_d_condition)(get_by_name('end-of-file')) return registry
Example #7
Source File: layout.py From pyvim with BSD 3-Clause "New" or "Revised" License | 6 votes |
def __init__(self, editor): once_hidden = [False] # Nonlocal def condition(): # Get editor buffers buffers = editor.window_arrangement.editor_buffers # Only show when there is only one empty buffer, but once the # welcome message has been hidden, don't show it again. result = (len(buffers) == 1 and buffers[0].buffer.text == '' and buffers[0].location is None and not once_hidden[0]) if not result: once_hidden[0] = True return result super(WelcomeMessageWindow, self).__init__( Window( FormattedTextControl(lambda: WELCOME_MESSAGE_TOKENS), align=WindowAlign.CENTER, style="class:welcome"), filter=Condition(condition))
Example #8
Source File: layout.py From pyvim with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self, editor): super(TabsToolbar, self).__init__( Window(TabsControl(editor), height=1), filter=Condition(lambda: len(editor.window_arrangement.tab_pages) > 1))
Example #9
Source File: menus.py From android_universal with MIT License | 5 votes |
def __init__(self, min_rows=3, suggested_max_column_width=30, show_meta=True, extra_filter=True): show_meta = to_cli_filter(show_meta) extra_filter = to_cli_filter(extra_filter) # Display filter: show when there are completions but not at the point # we are returning the input. full_filter = HasCompletions() & ~IsDone() & extra_filter any_completion_has_meta = Condition(lambda cli: any(c.display_meta for c in cli.current_buffer.complete_state.current_completions)) # Create child windows. completions_window = ConditionalContainer( content=Window( content=MultiColumnCompletionMenuControl( min_rows=min_rows, suggested_max_column_width=suggested_max_column_width), width=LayoutDimension(min=8), height=LayoutDimension(min=1)), filter=full_filter) meta_window = ConditionalContainer( content=Window(content=_SelectedCompletionMetaControl()), filter=show_meta & full_filter & any_completion_has_meta) # Initialise split. super(MultiColumnCompletionsMenu, self).__init__([ completions_window, meta_window ])
Example #10
Source File: editor.py From pyvim with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _create_application(self): """ Create CommandLineInterface instance. """ # Create Application. application = Application( input=self.input, output=self.output, editing_mode=EditingMode.VI, layout=self.editor_layout.layout, key_bindings=self.key_bindings, # get_title=lambda: get_terminal_title(self), style=DynamicStyle(lambda: self.current_style), paste_mode=Condition(lambda: self.paste_mode), # ignore_case=Condition(lambda: self.ignore_case), # TODO include_default_pygments_style=False, mouse_support=Condition(lambda: self.enable_mouse_support), full_screen=True, enable_page_navigation_bindings=True) # Handle command line previews. # (e.g. when typing ':colorscheme blue', it should already show the # preview before pressing enter.) def preview(_): if self.application.layout.has_focus(self.command_buffer): self.previewer.preview(self.command_buffer.text) self.command_buffer.on_text_changed += preview return application
Example #11
Source File: layout.py From pyvim with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _create_window_frame(self, editor_buffer): """ Create a Window for the buffer, with underneat a status bar. """ @Condition def wrap_lines(): return self.editor.wrap_lines window = Window( self._create_buffer_control(editor_buffer), allow_scroll_beyond_bottom=True, scroll_offsets=ScrollOffsets( left=0, right=0, top=(lambda: self.editor.scroll_offset), bottom=(lambda: self.editor.scroll_offset)), wrap_lines=wrap_lines, left_margins=[ConditionalMargin( margin=NumberedMargin( display_tildes=True, relative=Condition(lambda: self.editor.relative_number)), filter=Condition(lambda: self.editor.show_line_numbers))], cursorline=Condition(lambda: self.editor.cursorline), cursorcolumn=Condition(lambda: self.editor.cursorcolumn), colorcolumns=( lambda: [ColorColumn(pos) for pos in self.editor.colorcolumn]), ignore_content_width=True, ignore_content_height=True, get_line_prefix=partial(self._get_line_prefix, editor_buffer.buffer)) return HSplit([ window, VSplit([ WindowStatusBar(self.editor, editor_buffer), WindowStatusBarRuler(self.editor, window, editor_buffer.buffer), ], width=Dimension()), # Ignore actual status bar width. ]), window
Example #12
Source File: layout.py From pyvim with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self, editor, buffer_window, buffer): def get_scroll_text(): info = buffer_window.render_info if info: if info.full_height_visible: return 'All' elif info.top_visible: return 'Top' elif info.bottom_visible: return 'Bot' else: percentage = info.vertical_scroll_percentage return '%2i%%' % percentage return '' def get_tokens(): main_document = buffer.document return [ ('class:cursorposition', '(%i,%i)' % (main_document.cursor_position_row + 1, main_document.cursor_position_col + 1)), ('', ' - '), ('class:percentage', get_scroll_text()), ('', ' '), ] super(WindowStatusBarRuler, self).__init__( Window( FormattedTextControl(get_tokens), char=' ', align=WindowAlign.RIGHT, style='class:toolbar.status', height=1, ), filter=Condition(lambda: editor.show_ruler))
Example #13
Source File: layout.py From pyvim with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self, editor): def get_tokens(): if editor.message: return [('class:message', editor.message)] else: return [] super(MessageToolbarBar, self).__init__( FormattedTextToolbar(get_tokens), filter=Condition(lambda: editor.message is not None))
Example #14
Source File: layout.py From pyvim with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _bufferlist_overlay_visible(editor): """ True when the buffer list overlay should be displayed. (This is when someone starts typing ':b' or ':buffer' in the command line.) """ @Condition def overlay_is_visible(): app = get_app() text = editor.command_buffer.text.lstrip() return app.layout.has_focus(editor.command_buffer) and ( any(text.startswith(p) for p in ['b ', 'b! ', 'buffer', 'buffer!'])) return overlay_is_visible
Example #15
Source File: test_filter.py From python-prompt-toolkit with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_and(): for a in (True, False): for b in (True, False): c1 = Condition(lambda: a) c2 = Condition(lambda: b) c3 = c1 & c2 assert isinstance(c3, Filter) assert c3() == (a and b)
Example #16
Source File: test_filter.py From python-prompt-toolkit with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_or(): for a in (True, False): for b in (True, False): c1 = Condition(lambda: a) c2 = Condition(lambda: b) c3 = c1 | c2 assert isinstance(c3, Filter) assert c3() == a or b
Example #17
Source File: test_filter.py From python-prompt-toolkit with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_invert(): assert not (~Always())() assert ~Never()() c = ~Condition(lambda: False) assert c()
Example #18
Source File: swap-light-and-dark-colors.py From python-prompt-toolkit with BSD 3-Clause "New" or "Revised" License | 5 votes |
def main(): swapped = [False] # Nonlocal bindings = KeyBindings() @bindings.add("c-t") def _(event): " When ControlT has been pressed, toggle light/dark colors. " swapped[0] = not swapped[0] def bottom_toolbar(): if swapped[0]: on = "on=true" else: on = "on=false" return ( HTML( 'Press <style bg="#222222" fg="#ff8888">[control-t]</style> ' "to swap between dark/light colors. " '<style bg="ansiblack" fg="ansiwhite">[%s]</style>' ) % on ) text = prompt( HTML('<style fg="#aaaaaa">Give some animals</style>: '), completer=html_completer, complete_while_typing=True, bottom_toolbar=bottom_toolbar, key_bindings=bindings, lexer=PygmentsLexer(HtmlLexer), swap_light_and_dark_colors=Condition(lambda: swapped[0]), ) print("You said: %s" % text)
Example #19
Source File: get-password-with-toggle-display-shortcut.py From python-prompt-toolkit with BSD 3-Clause "New" or "Revised" License | 5 votes |
def main(): hidden = [True] # Nonlocal bindings = KeyBindings() @bindings.add("c-t") def _(event): " When ControlT has been pressed, toggle visibility. " hidden[0] = not hidden[0] print("Type Control-T to toggle password visible.") password = prompt( "Password: ", is_password=Condition(lambda: hidden[0]), key_bindings=bindings ) print("You said: %s" % password)
Example #20
Source File: layout.py From pymux with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self, window, pane, style, content): @Condition def is_selected(): return window.active_pane == pane def conditional_float(char, left=None, right=None, top=None, bottom=None, width=None, height=None): return Float( content=ConditionalContainer( Window(char=char, style='class:border'), filter=is_selected), left=left, right=right, top=top, bottom=bottom, width=width, height=height, z_index=Z_INDEX.HIGHLIGHTED_BORDER) self.container = FloatContainer( content, style=style, floats=[ # Sides. conditional_float(_focused_border_vertical, left=-1, top=0, bottom=0, width=1), conditional_float(_focused_border_vertical, right=-1, top=0, bottom=0, width=1), conditional_float(_focused_border_horizontal, left=0, right=0, top=-1, height=1), conditional_float(_focused_border_horizontal, left=0, right=0, bottom=-1, height=1), # Corners. conditional_float(_focused_border_left_top, left=-1, top=-1, width=1, height=1), conditional_float(_focused_border_right_top, right=-1, top=-1, width=1, height=1), conditional_float(_focused_border_left_bottom, left=-1, bottom=-1, width=1, height=1), conditional_float(_focused_border_right_bottom, right=-1, bottom=-1, width=1, height=1), ])
Example #21
Source File: python_input.py From ptpython with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _create_application( self, input: Optional[Input], output: Optional[Output] ) -> Application: """ Create an `Application` instance. """ return Application( layout=self.ptpython_layout.layout, key_bindings=merge_key_bindings( [ load_python_bindings(self), load_auto_suggest_bindings(), load_sidebar_bindings(self), load_confirm_exit_bindings(self), ConditionalKeyBindings( load_open_in_editor_bindings(), Condition(lambda: self.enable_open_in_editor), ), # Extra key bindings should not be active when the sidebar is visible. ConditionalKeyBindings( self.extra_key_bindings, Condition(lambda: not self.show_sidebar), ), ] ), color_depth=lambda: self.color_depth, paste_mode=Condition(lambda: self.paste_mode), mouse_support=Condition(lambda: self.enable_mouse_support), style=DynamicStyle(lambda: self._current_style), style_transformation=self.style_transformation, include_default_pygments_style=False, reverse_vi_search_direction=True, input=input, output=output, )
Example #22
Source File: history_browser.py From ptpython with BSD 3-Clause "New" or "Revised" License | 4 votes |
def __init__(self, python_input, original_document): """ Create an `Application` for the history screen. This has to be run as a sub application of `python_input`. When this application runs and returns, it retuns the selected lines. """ self.python_input = python_input history_mapping = HistoryMapping(self, python_input.history, original_document) self.history_mapping = history_mapping document = Document(history_mapping.concatenated_history) document = Document( document.text, cursor_position=document.cursor_position + document.get_start_of_line_position(), ) self.history_buffer = Buffer( document=document, on_cursor_position_changed=self._history_buffer_pos_changed, accept_handler=( lambda buff: get_app().exit(result=self.default_buffer.text) ), read_only=True, ) self.default_buffer = Buffer( name=DEFAULT_BUFFER, document=history_mapping.get_new_document(), on_cursor_position_changed=self._default_buffer_pos_changed, read_only=True, ) self.help_buffer = Buffer(document=Document(HELP_TEXT, 0), read_only=True) self.history_layout = HistoryLayout(self) self.app = Application( layout=self.history_layout.layout, full_screen=True, style=python_input._current_style, mouse_support=Condition(lambda: python_input.enable_mouse_support), key_bindings=create_key_bindings(self, python_input, history_mapping), )
Example #23
Source File: layout.py From pyvim with BSD 3-Clause "New" or "Revised" License | 4 votes |
def _create_buffer_control(self, editor_buffer): """ Create a new BufferControl for a given location. """ @Condition def preview_search(): return self.editor.incsearch input_processors = [ # Processor for visualising spaces. (should come before the # selection processor, otherwise, we won't see these spaces # selected.) ConditionalProcessor( ShowTrailingWhiteSpaceProcessor(), Condition(lambda: self.editor.display_unprintable_characters)), # Replace tabs by spaces. TabsProcessor( tabstop=(lambda: self.editor.tabstop), char1=(lambda: '|' if self.editor.display_unprintable_characters else ' '), char2=(lambda: _try_char('\u2508', '.', get_app().output.encoding()) if self.editor.display_unprintable_characters else ' '), ), # Reporting of errors, for Pyflakes. ReportingProcessor(editor_buffer), HighlightSelectionProcessor(), ConditionalProcessor( HighlightSearchProcessor(), Condition(lambda: self.editor.highlight_search)), ConditionalProcessor( HighlightIncrementalSearchProcessor(), Condition(lambda: self.editor.highlight_search) & preview_search), HighlightMatchingBracketProcessor(), DisplayMultipleCursors(), ] return BufferControl( lexer=DocumentLexer(editor_buffer), include_default_input_processors=False, input_processors=input_processors, buffer=editor_buffer.buffer, preview_search=preview_search, search_buffer_control=self.search_control, focus_on_click=True)