From a5deb5792e8b9f4b1004addfe6cc326c8cf1eb12 Mon Sep 17 00:00:00 2001 From: imkiva Date: Fri, 31 Oct 2025 13:41:12 +0800 Subject: [PATCH 1/2] [LLDB][Editline] clear right characters before getLine --- lldb/source/Host/common/Editline.cpp | 6 ++++++ lldb/test/API/terminal/TestEditline.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lldb/source/Host/common/Editline.cpp b/lldb/source/Host/common/Editline.cpp index 1b1922e710764..03b442cce973e 100644 --- a/lldb/source/Host/common/Editline.cpp +++ b/lldb/source/Host/common/Editline.cpp @@ -1626,6 +1626,12 @@ bool Editline::GetLine(std::string &line, bool &interrupted) { m_editor_status = EditorStatus::Editing; m_revert_cursor_index = -1; + if (m_locked_output && m_output_stream_sp) { + FILE *f = m_locked_output->GetFile().GetStream(); + fprintf(f, "\r" ANSI_CLEAR_RIGHT); + fflush(f); + } + int count; auto input = el_wgets(m_editline, &count); diff --git a/lldb/test/API/terminal/TestEditline.py b/lldb/test/API/terminal/TestEditline.py index 38f4f34ed740b..4696b1e1b112e 100644 --- a/lldb/test/API/terminal/TestEditline.py +++ b/lldb/test/API/terminal/TestEditline.py @@ -94,7 +94,7 @@ def test_prompt_no_color(self): # after the prompt. self.child.send("foo") # Check that there are no escape codes. - self.child.expect(re.escape("\n(lldb) foo")) + self.child.expect(re.escape("\n\r\x1b[K(lldb) foo")) @skipIfAsan @skipIfEditlineSupportMissing From bf2ef8ed5c3044078645b9c94b482d083f6b5816 Mon Sep 17 00:00:00 2001 From: imkiva Date: Mon, 3 Nov 2025 11:57:23 +0800 Subject: [PATCH 2/2] [LLDB][Editline] reviews --- lldb/source/Host/common/Editline.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lldb/source/Host/common/Editline.cpp b/lldb/source/Host/common/Editline.cpp index 03b442cce973e..e2995b37429fd 100644 --- a/lldb/source/Host/common/Editline.cpp +++ b/lldb/source/Host/common/Editline.cpp @@ -1626,11 +1626,8 @@ bool Editline::GetLine(std::string &line, bool &interrupted) { m_editor_status = EditorStatus::Editing; m_revert_cursor_index = -1; - if (m_locked_output && m_output_stream_sp) { - FILE *f = m_locked_output->GetFile().GetStream(); - fprintf(f, "\r" ANSI_CLEAR_RIGHT); - fflush(f); - } + lldbassert(m_output_stream_sp); + fprintf(m_locked_output->GetFile().GetStream(), "\r" ANSI_CLEAR_RIGHT); int count; auto input = el_wgets(m_editline, &count);