def _run_kitten(self, kitten, args=(), type_of_input='none'): w = self.active_window tab = self.active_tab if w is not None and tab is not None and w.overlay_for is None: orig_args, args = list(args), list(args) args[0:0] = [config_dir, kitten] if type_of_input in ('text', 'history', 'ansi', 'ansi-history'): data = w.as_text(as_ansi='ansi' in type_of_input, add_history='history' in type_of_input).encode('utf-8') elif type_of_input == 'none': data = None else: raise ValueError( 'Unknown type_of_input: {}'.format(type_of_input)) from kittens.runner import create_kitten_handler end_kitten = create_kitten_handler(kitten, orig_args) copts = { k: self.opts[k] for k in ('select_by_word_characters', 'open_url_with') } overlay_window = tab.new_special_window( SpecialWindow([ 'kitty', '+runpy', 'from kittens.runner import main; main()' ] + args, stdin=data, env={ 'KITTY_COMMON_OPTS': json.dumps(copts), 'PYTHONWARNINGS': 'ignore' }, overlay_for=w.id)) overlay_window.action_on_close = partial(self.on_kitten_finish, w.id, end_kitten)
def _run_kitten(self, kitten, args=(), input_data=None, window=None): orig_args, args = list(args), list(args) from kittens.runner import create_kitten_handler end_kitten = create_kitten_handler(kitten, orig_args) if window is None: w = self.active_window tab = self.active_tab else: w = window tab = w.tabref() if end_kitten.no_ui: end_kitten(None, getattr(w, 'id', None), self) return if w is not None and tab is not None and w.overlay_for is None: args[0:0] = [config_dir, kitten] if input_data is None: type_of_input = end_kitten.type_of_input if type_of_input in ('text', 'history', 'ansi', 'ansi-history', 'screen', 'screen-history', 'screen-ansi', 'screen-ansi-history'): data = w.as_text(as_ansi='ansi' in type_of_input, add_history='history' in type_of_input, add_wrap_markers='screen' in type_of_input).encode('utf-8') elif type_of_input is None: data = None else: raise ValueError( 'Unknown type_of_input: {}'.format(type_of_input)) else: data = input_data if isinstance(data, str): data = data.encode('utf-8') copts = { k: self.opts[k] for k in ('select_by_word_characters', 'open_url_with') } overlay_window = tab.new_special_window( SpecialWindow([ kitty_exe(), '+runpy', 'from kittens.runner import main; main()' ] + args, stdin=data, env={ 'KITTY_COMMON_OPTS': json.dumps(copts), 'KITTY_CHILD_PID': w.child.pid, 'PYTHONWARNINGS': 'ignore', 'OVERLAID_WINDOW_LINES': str(w.screen.lines), 'OVERLAID_WINDOW_COLS': str(w.screen.columns), }, cwd=w.cwd_of_child, overlay_for=w.id)) overlay_window.action_on_close = partial(self.on_kitten_finish, w.id, end_kitten) return overlay_window