mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-18 14:34:52 +02:00
Show the user an error message when pressing a key results in an exception
This commit is contained in:
@@ -1133,10 +1133,14 @@ class Boss:
|
||||
''')
|
||||
def combine(self, actions: Tuple[KeyAction, ...], window_for_dispatch: Optional[Window] = None, dispatch_type: str = 'KeyPress') -> bool:
|
||||
consumed = False
|
||||
if self.dispatch_action(actions[0], window_for_dispatch, dispatch_type):
|
||||
try:
|
||||
if self.dispatch_action(actions[0], window_for_dispatch, dispatch_type):
|
||||
consumed = True
|
||||
if len(actions) > 1:
|
||||
self.drain_actions(list(actions[1:]), window_for_dispatch, dispatch_type)
|
||||
except Exception as e:
|
||||
self.show_error('Key action failed', f'{actions[0].pretty()}\n{e}')
|
||||
consumed = True
|
||||
if len(actions) > 1:
|
||||
self.drain_actions(list(actions[1:]), window_for_dispatch, dispatch_type)
|
||||
return consumed
|
||||
|
||||
def on_focus(self, os_window_id: int, focused: bool) -> None:
|
||||
|
||||
@@ -260,6 +260,12 @@ class KeyAction(NamedTuple):
|
||||
return f'KeyAction({self.func!r}, {self.args!r})'
|
||||
return f'KeyAction({self.func!r})'
|
||||
|
||||
def pretty(self) -> str:
|
||||
ans = self.func
|
||||
for x in self.args:
|
||||
ans += f' {x}'
|
||||
return ans
|
||||
|
||||
|
||||
def parse_kittens_func_args(action: str, args_funcs: Dict[str, KeyFunc[Tuple[str, Any]]]) -> KeyAction:
|
||||
parts = action.strip().split(' ', 1)
|
||||
|
||||
Reference in New Issue
Block a user