From 6cd4d136a0fe7b98a05f2ffe1037dc38cd84ba6e Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Wed, 13 May 2020 14:24:11 +0430 Subject: [PATCH] Shell: Break out of continuation when ^C is pressed This fixes the little issue with Shell not allowing cancellation of commands once they were in continuation mode ``` $ ls ' $ # No matter what we do here, we cannot escape 'ls' ``` --- Shell/main.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Shell/main.cpp b/Shell/main.cpp index a0e96e352c..0b9a5cedfc 100644 --- a/Shell/main.cpp +++ b/Shell/main.cpp @@ -1540,8 +1540,25 @@ int main(int argc, char** argv) StringBuilder complete_line_builder; + bool should_break_current_command { false }; + + editor.on_interrupt_handled = [&] { + if (s_should_continue != ExitCodeOrContinuationRequest::ContinuationRequest::Nothing) { + should_break_current_command = true; + editor.finish(); + } + }; + for (;;) { auto line = editor.get_line(prompt()); + + if (should_break_current_command) { + complete_line_builder.clear(); + s_should_continue = ExitCodeOrContinuationRequest::ContinuationRequest::Nothing; + should_break_current_command = false; + continue; + } + if (line.is_empty()) continue;