def __init__(self, clean: bool, executable: str) -> None: self._expecting_response_for_gui_update = False super().__init__(clean, executable) self._send_msg(ToplevelCommand("get_environment_info"))
def print_error_in_backend(error_str): error_source='import sys; print("{}",file=sys.stderr)'.format(error_str) cmd=ToplevelCommand(command='execute_source', source=error_source) get_runner().send_command(cmd)
def __init__(self, clean: bool, executable: str) -> None: super().__init__(clean, executable) self._send_msg(ToplevelCommand("get_environment_info"))
def _submit_input(self, text_to_be_submitted): logging.debug( "SHELL: submitting %r in state %s", text_to_be_submitted, get_runner().get_state(), ) if get_runner().is_waiting_toplevel_command(): # register in history and count if text_to_be_submitted in self._command_history: self._command_history.remove(text_to_be_submitted) self._command_history.append(text_to_be_submitted) self._command_history_current_index = ( None ) # meaning command selection is not in process cmd_line = text_to_be_submitted.strip() try: if cmd_line.startswith("%"): parts = cmd_line.split(" ", maxsplit=1) if len(parts) == 2: args_str = parts[1].strip() else: args_str = "" argv = parse_cmd_line(cmd_line[1:]) command_name = argv[0] get_workbench().event_generate( "MagicCommand", cmd_line=text_to_be_submitted ) get_runner().send_command( ToplevelCommand( command_name, args=argv[1:], args_str=args_str, cmd_line=cmd_line, ) ) elif cmd_line.startswith("!"): argv = parse_cmd_line(cmd_line[1:]) get_workbench().event_generate( "SystemCommand", cmd_line=text_to_be_submitted ) get_runner().send_command( ToplevelCommand( "execute_system_command", argv=argv, cmd_line=cmd_line ) ) else: get_runner().send_command( ToplevelCommand("execute_source", source=text_to_be_submitted) ) # remember the place where the output of this command started self.mark_set("command_io_start", "output_insert") self.mark_gravity("command_io_start", "left") # discard old io events self._applied_io_events = [] self._queued_io_events = [] except Exception: get_workbench().report_exception() self._insert_prompt() get_workbench().event_generate( "ShellCommand", command_text=text_to_be_submitted ) else: assert get_runner().is_running() get_runner().send_program_input(text_to_be_submitted) get_workbench().event_generate( "ShellInput", input_text=text_to_be_submitted ) self._applied_io_events.append((text_to_be_submitted, "stdin"))