From 9ea0de868cb0b57d29f48d7c4061540001b01c80 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 27 Apr 2018 18:13:37 +0530 Subject: [PATCH] Parse send_text payload only once at startup --- kitty/config.py | 6 ++++++ kitty/window.py | 7 +++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/kitty/config.py b/kitty/config.py index 1df554877..379749cb1 100644 --- a/kitty/config.py +++ b/kitty/config.py @@ -111,6 +111,12 @@ def parse_key_action(action): args = tuple(map(parse_key_action, filter(None, parts))) elif func == 'send_text': args = rest.split(' ', 1) + if len(args) > 0: + try: + args[1] = parse_send_text_bytes(args[1]) + except Exception: + log_error('Ignoring invalid send_text string: ' + args[1]) + args[1] = '' elif func in ('run_kitten', 'run_simple_kitten'): if func == 'run_simple_kitten': func = 'run_kitten' diff --git a/kitty/window.py b/kitty/window.py index 9b2ba33eb..6a1934d85 100644 --- a/kitty/window.py +++ b/kitty/window.py @@ -9,7 +9,7 @@ from collections import deque from enum import Enum from .child import cwd_of_process -from .config import build_ansi_color_table, parse_send_text_bytes +from .config import build_ansi_color_table from .constants import ( ScreenGeometry, WindowGeometry, appname, get_boss, wakeup ) @@ -187,10 +187,9 @@ class Window: required_mode = frozenset(required_mode.split(',')) if not required_mode & {mode, 'all'}: return True - data = parse_send_text_bytes(text) - if not data: + if not text: return True - self.write_to_child(data) + self.write_to_child(text) def write_to_child(self, data): if data: