示例#1
0
def real_main(args: List[str]) -> None:
    msg = 'Show an error message'
    cli_opts, items = parse_args(args[1:],
                                 OPTIONS,
                                 '',
                                 msg,
                                 'hints',
                                 result_class=ErrorCLIOptions)
    data = json.loads(sys.stdin.buffer.read())
    error_message = data['msg']
    if cli_opts.title:
        print(styled(cli_opts.title, fg_intense=True, fg='red', bold=True))
        print()
    print(error_message, flush=True)
    if data.get('tb'):
        import select
        from kittens.tui.operations import init_state, set_cursor_visible
        fd, original_termios = open_tty()
        msg = '\n\r\x1b[1;32mPress e to see detailed traceback or any other key to exit\x1b[m'
        write_all(fd, msg)
        write_all(
            fd,
            init_state(alternate_screen=False, kitty_keyboard_mode=False) +
            set_cursor_visible(False))
        with no_echo(fd):
            termios.tcdrain(fd)
            while True:
                rd = select.select([fd], [], [])[0]
                if not rd:
                    break
                q = os.read(fd, 1)
                if q in b'eE':
                    break
                return
    if data.get('tb'):
        tb = data['tb']
        for ln in tb.splitlines():
            print('\r\n', ln, sep='', end='')
        print(flush=True)
    hold_till_enter()
示例#2
0
文件: loop.py 项目: tomaskrizek/kitty
 def reset_state_to_original(self) -> None:
     normal_tty(self.tty_fd, self.original_termios)
     if self.extra_finalize:
         write_all(self.tty_fd, self.extra_finalize)
     write_all(self.tty_fd, reset_state())
示例#3
0
文件: loop.py 项目: tomaskrizek/kitty
 def set_state_for_loop(self, set_raw: bool = True) -> None:
     if set_raw:
         raw_tty(self.tty_fd, self.original_termios)
     write_all(self.tty_fd, init_state())
示例#4
0
 def set_state_for_loop(self, set_raw: bool = True) -> None:
     if set_raw:
         raw_tty(self.tty_fd, self.original_termios)
     write_all(self.tty_fd, init_state(self.use_alternate_screen, self.mouse_tracking))