Fix #482
This commit is contained in:
parent
07e2d9175c
commit
92ca8ab9cc
@ -50,15 +50,26 @@ def launch(args):
|
|||||||
os.environ['KITTY_CONFIG_DIRECTORY'] = config_dir
|
os.environ['KITTY_CONFIG_DIRECTORY'] = config_dir
|
||||||
from kittens.tui.operations import clear_screen, reset_mode
|
from kittens.tui.operations import clear_screen, reset_mode
|
||||||
m = import_kitten_main_module(config_dir, kitten)
|
m = import_kitten_main_module(config_dir, kitten)
|
||||||
result = m['start'](args)
|
try:
|
||||||
|
result = m['start'](args)
|
||||||
|
finally:
|
||||||
|
sys.stdin = sys.__stdin__
|
||||||
print(reset_mode('ALTERNATE_SCREEN') + clear_screen(), end='')
|
print(reset_mode('ALTERNATE_SCREEN') + clear_screen(), end='')
|
||||||
if result is not None:
|
if result is not None:
|
||||||
import json
|
import json
|
||||||
print('OK:', json.dumps(result))
|
data = json.dumps(result)
|
||||||
|
print('OK:', len(data), data)
|
||||||
sys.stderr.flush()
|
sys.stderr.flush()
|
||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
|
|
||||||
|
def deserialize(output):
|
||||||
|
import json
|
||||||
|
if output.startswith('OK: '):
|
||||||
|
prefix, sz, rest = output.split(' ', 2)
|
||||||
|
return json.loads(rest[:int(sz)])
|
||||||
|
|
||||||
|
|
||||||
def run_kitten(kitten):
|
def run_kitten(kitten):
|
||||||
import runpy
|
import runpy
|
||||||
kitten = resolved_kitten(kitten)
|
kitten = resolved_kitten(kitten)
|
||||||
|
|||||||
@ -498,7 +498,7 @@ class Boss:
|
|||||||
SpecialWindow(
|
SpecialWindow(
|
||||||
['kitty', '+runpy', 'from kittens.runner import main; main()'] + args,
|
['kitty', '+runpy', 'from kittens.runner import main; main()'] + args,
|
||||||
stdin=data,
|
stdin=data,
|
||||||
env={'KITTY_COMMON_OPTS': json.dumps(copts)},
|
env={'KITTY_COMMON_OPTS': json.dumps(copts), 'PYTHONWARNINGS': 'ignore'},
|
||||||
overlay_for=w.id))
|
overlay_for=w.id))
|
||||||
overlay_window.action_on_close = partial(self.on_kitten_finish, w.id, end_kitten)
|
overlay_window.action_on_close = partial(self.on_kitten_finish, w.id, end_kitten)
|
||||||
|
|
||||||
@ -510,8 +510,9 @@ class Boss:
|
|||||||
|
|
||||||
def on_kitten_finish(self, target_window_id, end_kitten, source_window):
|
def on_kitten_finish(self, target_window_id, end_kitten, source_window):
|
||||||
output = self.get_output(source_window, num_lines=None)
|
output = self.get_output(source_window, num_lines=None)
|
||||||
if output.startswith('OK: '):
|
from kittens.runner import deserialize
|
||||||
data = json.loads(output.partition(' ')[2].strip())
|
data = deserialize(output)
|
||||||
|
if data is not None:
|
||||||
end_kitten(data, target_window_id, self)
|
end_kitten(data, target_window_id, self)
|
||||||
|
|
||||||
def input_unicode_character(self):
|
def input_unicode_character(self):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user