Custom key bindings for mycli.
(mycli)
| 65 | |
| 66 | |
| 67 | def mycli_bindings(mycli) -> KeyBindings: |
| 68 | """Custom key bindings for mycli.""" |
| 69 | kb = KeyBindings() |
| 70 | |
| 71 | @kb.add('f1') |
| 72 | def _(event: KeyPressEvent) -> None: |
| 73 | """Open browser to documentation index.""" |
| 74 | _logger.debug('Detected F1 key.') |
| 75 | webbrowser.open_new_tab(DOCS_URL) |
| 76 | prompt_toolkit.application.run_in_terminal(print_f1_help) |
| 77 | safe_invalidate_display(event.app) |
| 78 | |
| 79 | @kb.add('escape', '[', 'P') |
| 80 | def _(event: KeyPressEvent) -> None: |
| 81 | """Open browser to documentation index.""" |
| 82 | _logger.debug("Detected alternate F1 key sequence.") |
| 83 | webbrowser.open_new_tab(DOCS_URL) |
| 84 | prompt_toolkit.application.run_in_terminal(print_f1_help) |
| 85 | safe_invalidate_display(event.app) |
| 86 | |
| 87 | @kb.add("f2") |
| 88 | def _(_event: KeyPressEvent) -> None: |
| 89 | """Enable/Disable SmartCompletion Mode.""" |
| 90 | _logger.debug("Detected F2 key.") |
| 91 | mycli.completer.smart_completion = not mycli.completer.smart_completion |
| 92 | |
| 93 | @kb.add('escape', '[', 'Q') |
| 94 | def _(_event: KeyPressEvent) -> None: |
| 95 | """Enable/Disable SmartCompletion Mode.""" |
| 96 | _logger.debug("Detected alternate F2 key sequence.") |
| 97 | mycli.completer.smart_completion = not mycli.completer.smart_completion |
| 98 | |
| 99 | @kb.add("f3") |
| 100 | def _(_event: KeyPressEvent) -> None: |
| 101 | """Enable/Disable Multiline Mode.""" |
| 102 | _logger.debug("Detected F3 key.") |
| 103 | mycli.multi_line = not mycli.multi_line |
| 104 | |
| 105 | @kb.add('escape', '[', 'R') |
| 106 | def _(_event: KeyPressEvent) -> None: |
| 107 | """Enable/Disable Multiline Mode.""" |
| 108 | _logger.debug('Detected alternate F3 key sequence.') |
| 109 | mycli.multi_line = not mycli.multi_line |
| 110 | |
| 111 | @kb.add("f4") |
| 112 | def _(event: KeyPressEvent) -> None: |
| 113 | """Toggle between Vi and Emacs mode.""" |
| 114 | _logger.debug("Detected F4 key.") |
| 115 | if mycli.key_bindings == "vi": |
| 116 | event.app.editing_mode = EditingMode.EMACS |
| 117 | mycli.key_bindings = "emacs" |
| 118 | event.app.ttimeoutlen = mycli.emacs_ttimeoutlen |
| 119 | else: |
| 120 | event.app.editing_mode = EditingMode.VI |
| 121 | mycli.key_bindings = "vi" |
| 122 | event.app.ttimeoutlen = mycli.vi_ttimeoutlen |
| 123 | |
| 124 | @kb.add('escape', '[', 'S') |