From 832fa9a6a9da42c6a5780086ca97ed1a9ccbf54e Mon Sep 17 00:00:00 2001 From: Kevin Van Brunt Date: Mon, 23 Mar 2026 13:27:16 -0400 Subject: [PATCH 1/2] Do not submit command line when user presses enter when selecting a completion. --- cmd2/cmd2.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py index 593ea7e61..245c67c11 100644 --- a/cmd2/cmd2.py +++ b/cmd2/cmd2.py @@ -684,11 +684,17 @@ def _create_main_session(self, auto_suggest: bool, completekey: str) -> PromptSe Otherwise, uses dummy drivers to support non-interactive streams like pipes or files. """ - key_bindings = None + # Configure custom key bindings + key_bindings = KeyBindings() + + # Add a binding for 'enter' that triggers only when a completion is selected. + # This allows accepting a completion without submitting the command. + @key_bindings.add('enter', filter=filters.completion_is_selected) + def _(event: Any) -> None: + event.current_buffer.complete_state = None + if completekey != self.DEFAULT_COMPLETEKEY: # Configure prompt_toolkit `KeyBindings` with the custom key for completion - key_bindings = KeyBindings() - @key_bindings.add(completekey) def _(event: Any) -> None: # pragma: no cover """Trigger completion.""" From da219fe04ce1fe00e9b8d9ae480cd49bb2aed73f Mon Sep 17 00:00:00 2001 From: Kevin Van Brunt Date: Mon, 23 Mar 2026 13:31:41 -0400 Subject: [PATCH 2/2] Added pragma: no cover. --- cmd2/cmd2.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py index 245c67c11..4c929f703 100644 --- a/cmd2/cmd2.py +++ b/cmd2/cmd2.py @@ -690,7 +690,7 @@ def _create_main_session(self, auto_suggest: bool, completekey: str) -> PromptSe # Add a binding for 'enter' that triggers only when a completion is selected. # This allows accepting a completion without submitting the command. @key_bindings.add('enter', filter=filters.completion_is_selected) - def _(event: Any) -> None: + def _(event: Any) -> None: # pragma: no cover event.current_buffer.complete_state = None if completekey != self.DEFAULT_COMPLETEKEY: