summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Slenders <jonathan@slenders.be>2016-12-17 12:50:46 +0100
committerJonathan Slenders <jonathan@slenders.be>2016-12-17 12:50:46 +0100
commitb3e0f6c842cc1f92530fa700097d3599faa37877 (patch)
tree497d1e7e91d548cb0bc21571e93a8d217035f037
parent513112cea977af51d334166382db4343ea24ea77 (diff)
Added edit-and-execute-command command.
-rw-r--r--prompt_toolkit/key_binding/bindings/named_commands.py11
-rw-r--r--prompt_toolkit/key_binding/bindings/vi.py5
2 files changed, 13 insertions, 3 deletions
diff --git a/prompt_toolkit/key_binding/bindings/named_commands.py b/prompt_toolkit/key_binding/bindings/named_commands.py
index 2225672e..f412f197 100644
--- a/prompt_toolkit/key_binding/bindings/named_commands.py
+++ b/prompt_toolkit/key_binding/bindings/named_commands.py
@@ -500,3 +500,14 @@ def operate_and_get_next(event):
buff.working_index = new_index
event.cli.pre_run_callables.append(set_working_index)
+
+
+@register('edit-and-execute-command')
+def edit_and_execute(event):
+ """
+ Invoke an editor on the current command line, and accept the result.
+ """
+ buff = event.current_buffer
+
+ buff.open_in_editor(event.cli)
+ buff.accept_action.validate_and_handle(event.cli, buff)
diff --git a/prompt_toolkit/key_binding/bindings/vi.py b/prompt_toolkit/key_binding/bindings/vi.py
index c1b168f9..4b20e9a1 100644
--- a/prompt_toolkit/key_binding/bindings/vi.py
+++ b/prompt_toolkit/key_binding/bindings/vi.py
@@ -13,6 +13,7 @@ from prompt_toolkit.selection import SelectionType, SelectionState, PasteMode
from .utils import create_handle_decorator
from .scroll import scroll_forward, scroll_backward, scroll_half_page_up, scroll_half_page_down, scroll_one_line_up, scroll_one_line_down, scroll_page_up, scroll_page_down
+from .named_commands import get_by_name
import prompt_toolkit.filters as filters
from six.moves import range
@@ -1691,9 +1692,7 @@ def load_vi_open_in_editor_bindings(registry, filter=None):
navigation_mode = ViNavigationMode()
handle = create_handle_decorator(registry, filter & ViMode())
- @handle('v', filter=navigation_mode)
- def _(event):
- event.current_buffer.open_in_editor(event.cli)
+ handle('v', filter=navigation_mode)(get_by_name('edit-and-execute-command'))
def load_vi_system_bindings(registry, filter=None):