[Lldb-commits] [lldb] [LLDB][Editline] empty current line before `el_wgets` (PR #165830)

via lldb-commits lldb-commits at lists.llvm.org
Sun Nov 2 19:57:39 PST 2025


https://github.com/imkiva updated https://github.com/llvm/llvm-project/pull/165830

>From a5deb5792e8b9f4b1004addfe6cc326c8cf1eb12 Mon Sep 17 00:00:00 2001
From: imkiva <zengtao at iscas.ac.cn>
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 <zengtao at iscas.ac.cn>
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);



More information about the lldb-commits mailing list