From 32b093b42240e94d15652f9be6c028e321963a35 Mon Sep 17 00:00:00 2001 From: David Strobach Date: Wed, 25 Mar 2020 17:30:28 +0100 Subject: [PATCH] abbrevs: add handler for return key --- xontrib/abbrevs.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/xontrib/abbrevs.py b/xontrib/abbrevs.py index ac18def42..14d9fd8c8 100644 --- a/xontrib/abbrevs.py +++ b/xontrib/abbrevs.py @@ -1,6 +1,8 @@ """Command abbreviations.""" import builtins +from prompt_toolkit.filters import IsMultiline +from prompt_toolkit.keys import Keys from xonsh.platform import ptk_shell_type __all__ = () @@ -22,12 +24,26 @@ def expand_abbrev(buffer): def custom_keybindings(bindings, **kw): if ptk_shell_type() == "prompt_toolkit2": - handler = bindings.add - else: - handler = bindings.registry.add_binding + from xonsh.ptk2.key_bindings import carriage_return + from prompt_toolkit.filters import EmacsInsertMode, ViInsertMode - @handler(" ") - def space(event): + handler = bindings.add + insert_mode = ViInsertMode() | EmacsInsertMode() + else: + from xonsh.ptk.key_bindings import carriage_return + + handler = bindings.registry.add_binding + insert_mode = True + + @handler(" ", filter=IsMultiline() & insert_mode) + def handle_space(event): buffer = event.app.current_buffer expand_abbrev(buffer) buffer.insert_text(" ") + + @handler(Keys.ControlJ, filter=IsMultiline() & insert_mode) + @handler(Keys.ControlM, filter=IsMultiline() & insert_mode) + def multiline_carriage_return(event): + buffer = event.app.current_buffer + expand_abbrev(buffer) + carriage_return(buffer, event.cli)