def build_propmpt(self) -> pt_shortcuts.PromptSession: history = pt_history.FileHistory( os.path.expanduser('~/.edgedbhistory')) bindings = pt_key_binding.KeyBindings() handle = bindings.add @handle('f3') # type: ignore def _mode_toggle(event: Any) -> None: self.context.toggle_query_mode() @handle('f4') # type: ignore def _implicit_toggle(event: Any) -> None: self.context.toggle_implicit() @handle('f5') # type: ignore def _introspect_toggle(event: Any) -> None: self.context.toggle_introspect_types() if self.context.introspect_types: self.ensure_connection() self.introspect_db(self.connection) else: self.context.typenames = None @handle('tab') # type: ignore def _tab(event: Any) -> None: b = prompt.app.current_buffer before_cursor = b.document.current_line_before_cursor if b.text and (not before_cursor or before_cursor.isspace()): b.insert_text(' ') prompt = pt_shortcuts.PromptSession( lexer=pt_lexers.PygmentsLexer(eql_pygments.EdgeQLLexer), include_default_pygments_style=False, completer=pt_complete.DummyCompleter(), reserve_space_for_menu=6, message=self.get_prompt_tokens, prompt_continuation=self.get_continuation_tokens, bottom_toolbar=self.get_toolbar_tokens, multiline=is_multiline, history=history, complete_while_typing=pt_filters.Always(), key_bindings=bindings, style=self.style, editing_mode=pt_enums.EditingMode.VI, search_ignore_case=True, ) return prompt
def build_cli(self): history = pt_history.FileHistory( os.path.expanduser('~/.edgedbhistory')) key_binding_manager = pt_keymanager.KeyBindingManager( enable_system_bindings=True, enable_search=True, enable_abort_and_exit_bindings=True) @key_binding_manager.registry.add_binding(pt_keys.Keys.F3) def _graphql_toggle(event): self.graphql = not self.graphql @key_binding_manager.registry.add_binding(pt_keys.Keys.Tab) def _tab(event): b = cli.current_buffer before_cursor = b.document.current_line_before_cursor if b.text and (not before_cursor or before_cursor.isspace()): b.insert_text(' ') layout = pt_shortcuts.create_prompt_layout( lexer=pt_lexers.PygmentsLexer(eql_pygments.EdgeQLLexer), reserve_space_for_menu=4, get_prompt_tokens=self.get_prompt_tokens, get_continuation_tokens=self.get_continuation_tokens, get_bottom_toolbar_tokens=self.get_toolbar_tokens, multiline=True) buf = InputBuffer( history=history, # to make reserve_space_for_menu work: complete_while_typing=pt_filters.Always(), accept_action=pt_app.AcceptAction.RETURN_DOCUMENT) app = pt_app.Application( style=self.style, layout=layout, buffer=buf, ignore_case=True, key_bindings_registry=key_binding_manager.registry, on_exit=pt_app.AbortAction.RAISE_EXCEPTION, on_abort=pt_app.AbortAction.RETRY) cli = pt_interface.CommandLineInterface( application=app, eventloop=self.eventloop) return cli