From 3edae0d5e5b69a4613a0dfce32ef56eb3ffec2fb Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Tue, 1 Jul 2025 11:04:49 -0700 Subject: [PATCH] [lldb] Use EL_REFRESH to refresh Editline Letting Editline refresh itself is more robust and ensures that the current text is redraw if it was accidentally cleared. In that scenario MoveCursor would only fix up the cursor position. --- lldb/source/Host/common/Editline.cpp | 2 +- .../test/API/functionalities/statusline/TestStatusline.py | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lldb/source/Host/common/Editline.cpp b/lldb/source/Host/common/Editline.cpp index 4720d3b4c29a..5ed30fbb231d 100644 --- a/lldb/source/Host/common/Editline.cpp +++ b/lldb/source/Host/common/Editline.cpp @@ -1713,7 +1713,7 @@ void Editline::Refresh() { if (!m_editline || !m_output_stream_sp) return; LockedStreamFile locked_stream = m_output_stream_sp->Lock(); - MoveCursor(CursorLocation::EditingCursor, CursorLocation::EditingCursor); + el_set(m_editline, EL_REFRESH); } bool Editline::CompleteCharacter(char ch, EditLineGetCharType &out) { diff --git a/lldb/test/API/functionalities/statusline/TestStatusline.py b/lldb/test/API/functionalities/statusline/TestStatusline.py index e2c2ed548ed0..ca2f10820d56 100644 --- a/lldb/test/API/functionalities/statusline/TestStatusline.py +++ b/lldb/test/API/functionalities/statusline/TestStatusline.py @@ -114,8 +114,6 @@ class TestStatusline(PExpectTest): self.resize() self.expect("set set show-statusline true", ["no target"]) self.resize(20, 60) - # Check for the newline followed by the escape code to move the cursor - # up one line. - self.child.expect(re.escape("\n\x1b[1A")) - # Check for the escape code to move the cursor back to column 8. - self.child.expect(re.escape("\x1b[8G")) + # Check for the escape code to resize the scroll window, followed by + # the prompt. + self.child.expect(re.escape("\x1b[1;19r\x1b8(lldb)"))