##// END OF EJS Templates
Fix configuration before initialization
krassowski -
Show More
@@ -482,7 +482,10 b' class TerminalInteractiveShell(InteractiveShell):'
482 482
483 483 @observe("shortcuts")
484 484 def _shortcuts_changed(self, change):
485 user_shortcuts = change.new
485 if self.pt_app:
486 self.pt_app.key_bindings = self._merge_shortcuts(user_shortcuts=change.new)
487
488 def _merge_shortcuts(self, user_shortcuts):
486 489 # rebuild the bindings list from scratch
487 490 key_bindings = create_ipython_shortcuts(self)
488 491
@@ -568,7 +571,8 b' class TerminalInteractiveShell(InteractiveShell):'
568 571 key_bindings = create_ipython_shortcuts(self, skip=shortcuts_to_skip)
569 572 for binding in shortcuts_to_add:
570 573 add_binding(key_bindings, binding)
571 self.pt_app.key_bindings = key_bindings
574
575 return key_bindings
572 576
573 577 prompt_includes_vi_mode = Bool(True,
574 578 help="Display the current vi mode (when using vi editing mode)."
@@ -607,8 +611,7 b' class TerminalInteractiveShell(InteractiveShell):'
607 611 return
608 612
609 613 # Set up keyboard shortcuts
610 key_bindings = create_ipython_shortcuts(self)
611
614 key_bindings = self._merge_shortcuts(user_shortcuts=self.shortcuts)
612 615
613 616 # Pre-populate history from IPython's history database
614 617 history = PtkHistoryAdapter(self)
@@ -388,17 +388,19 b' def test_modify_shortcut_with_filters(ipython_with_prompt):'
388 388 assert matched_keys == {")", "]", "}", "x", '"'}
389 389
390 390
391 def test_command():
391 def example_command():
392 392 pass
393 393
394 394
395 395 def test_add_shortcut_for_new_command(ipython_with_prompt):
396 matched = find_bindings_by_command(test_command)
396 matched = find_bindings_by_command(example_command)
397 397 assert len(matched) == 0
398 398
399 with pytest.raises(ValueError, match="test_command is not a known"):
400 ipython_with_prompt.shortcuts = [{"command": "test_command", "new_keys": ["x"]}]
401 matched = find_bindings_by_command(test_command)
399 with pytest.raises(ValueError, match="example_command is not a known"):
400 ipython_with_prompt.shortcuts = [
401 {"command": "example_command", "new_keys": ["x"]}
402 ]
403 matched = find_bindings_by_command(example_command)
402 404 assert len(matched) == 0
403 405
404 406
@@ -420,3 +422,13 b' def test_add_shortcut_for_existing_command(ipython_with_prompt):'
420 422 ipython_with_prompt.shortcuts = []
421 423 matched = find_bindings_by_command(skip_over)
422 424 assert len(matched) == 5
425
426
427 def test_setting_shortcuts_before_pt_app_init():
428 ipython = get_ipython()
429 assert ipython.pt_app is None
430 shortcuts = [
431 {"command": "IPython:auto_match.skip_over", "new_keys": ["x"], "create": True}
432 ]
433 ipython.shortcuts = shortcuts
434 assert ipython.shortcuts == shortcuts
General Comments 0
You need to be logged in to leave comments. Login now