Esempio n. 1
0
 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"))
Esempio n. 2
0
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)
Esempio n. 3
0
 def __init__(self, clean: bool, executable: str) -> None:
     super().__init__(clean, executable)
     self._send_msg(ToplevelCommand("get_environment_info"))
Esempio n. 4
0
    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"))