Make debugging kittens a little nicer

Now debug() writes to the stderr of the parent kitty process instead of
a temp file.
This commit is contained in:
Kovid Goyal
2018-05-19 16:32:08 +05:30
parent 646a349d82
commit fb57653665
7 changed files with 40 additions and 12 deletions

View File

@@ -46,8 +46,6 @@ def create_kitten_handler(kitten, orig_args):
def set_debug(kitten):
from kittens.tui.loop import debug
path = os.path.join('/tmp', 'kitten-' + kitten)
debug.fd = open(path, 'w')
import builtins
builtins.debug = debug

View File

@@ -3,16 +3,17 @@
# License: GPL v3 Copyright: 2018, Kovid Goyal <kovid at kovidgoyal.net>
from kittens.tui.operations import commander
from .operations import commander
class Handler:
image_manager_class = None
def _initialize(self, screen_size, quit_loop, wakeup, start_job, image_manager=None):
def _initialize(self, screen_size, quit_loop, wakeup, start_job, debug, image_manager=None):
self.screen_size, self.quit_loop = screen_size, quit_loop
self.wakeup = wakeup
self.debug = debug
self.start_job = start_job
self.cmd = commander(self)
self.image_manager = image_manager
@@ -20,10 +21,12 @@ class Handler:
def __enter__(self):
if self.image_manager is not None:
self.image_manager.__enter__()
self.debug.fobj = self
self.initialize()
def __exit__(self, *a):
del self.write_buf[:]
del self.debug.fobj
self.finalize()
if self.image_manager is not None:
self.image_manager.__exit__(*a)

View File

@@ -31,12 +31,16 @@ screen_size = screen_size_function()
def debug(*a, **kw):
fd = getattr(debug, 'fd', None)
if fd is None:
fd = debug.fd = open('/tmp/kitten-debug', 'w')
kw['file'] = fd
from base64 import standard_b64encode
buf = io.StringIO()
kw['file'] = buf
print(*a, **kw)
fd.flush()
text = buf.getvalue()
text = b'\x1bP@kitty-print|' + standard_b64encode(text.encode('utf-8')) + b'\x1b\\'
fobj = getattr(debug, 'fobj', sys.stdout.buffer)
fobj.write(text)
if hasattr(fobj, 'flush'):
fobj.flush()
def write_all(fd, data):
@@ -374,7 +378,7 @@ class Loop:
image_manager = handler.image_manager_class(handler)
keep_going = True
try:
handler._initialize(screen_size(), self.quit, self.wakeup, self.start_job, image_manager)
handler._initialize(screen_size(), self.quit, self.wakeup, self.start_job, debug, image_manager)
with handler:
while keep_going:
has_data_to_write = bool(handler.write_buf)
@@ -403,7 +407,7 @@ class Loop:
handler = UnhandledException(tb)
handler.write_buf = []
handler._term_manager = term_manager
handler._initialize(screen_size(), self.quit, self.wakeup, self.start_job)
handler._initialize(screen_size(), self.quit, self.wakeup, self.start_job, debug)
with handler:
while True:
has_data_to_write = bool(handler.write_buf)