From d6b3472db057e35e908c9a91873e94b0de2654c4 Mon Sep 17 00:00:00 2001 From: Irina Truong Date: Thu, 8 Sep 2022 15:14:42 -0700 Subject: [PATCH] Esc + Enter should sumbit the query in safe multiline mode. --- pgcli/key_bindings.py | 4 ++-- pgcli/pgbuffer.py | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pgcli/key_bindings.py b/pgcli/key_bindings.py index 7dd2924f..9c016f7f 100644 --- a/pgcli/key_bindings.py +++ b/pgcli/key_bindings.py @@ -9,7 +9,7 @@ from prompt_toolkit.filters import ( vi_mode, ) -from .pgbuffer import buffer_should_be_handled +from .pgbuffer import buffer_should_be_handled, safe_multi_line_mode _logger = logging.getLogger(__name__) @@ -114,7 +114,7 @@ def pgcli_bindings(pgcli): _logger.debug("Detected enter key.") event.current_buffer.validate_and_handle() - @kb.add("escape", "enter", filter=~vi_mode) + @kb.add("escape", "enter", filter=~vi_mode & ~safe_multi_line_mode(pgcli)) def _(event): """Introduces a line break regardless of multi-line mode or not.""" _logger.debug("Detected alt-enter key.") diff --git a/pgcli/pgbuffer.py b/pgcli/pgbuffer.py index 706ed25f..6fdbfba1 100644 --- a/pgcli/pgbuffer.py +++ b/pgcli/pgbuffer.py @@ -22,6 +22,14 @@ mode, which by default will insert new lines on Enter. """ +def safe_multi_line_mode(pgcli): + @Condition + def cond(): + _logger.debug('Multi-line mode state: "%s" / "%s"', pgcli.multi_line, pgcli.multiline_mode) + return pgcli.multi_line and (pgcli.multiline_mode == "safe") + return cond + + def buffer_should_be_handled(pgcli): @Condition def cond():