[Lldb-commits] [lldb] [lldb] Fix help/pydoc output when the statusline is enabled (PR #169101)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Fri Nov 21 13:55:26 PST 2025
https://github.com/JDevlieghere created https://github.com/llvm/llvm-project/pull/169101
Using Python's built-in help shows an empty screen when the statusline is enabled. The issue is the pydoc pager (e.g. less) which doesn't play nice with the statusline. Use the "plain" pager instead.
I considered making this conditional on the statusline, but to do that right you would need to register a callback that toggles it every time the setting changes and that doesn't seem worth the complexity.
Fixes #166610
>From 022752aefebdb4339a3831dcd71a204715944955 Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere <jonas at devlieghere.com>
Date: Fri, 21 Nov 2025 13:49:59 -0800
Subject: [PATCH] [lldb] Fix help/pydoc output when the statusline is enabled
Using Python's built-in help shows an empty screen when the statusline
is enabled. The issue is the pydoc pager (e.g. less) which doesn't play
nice with the statusline. Use the "plain" pager instead.
I considered making this conditional on the statusline, but to do that
right you would need to register a callback that toggles it every time
the setting changes and that doesn't seem worth the complexity.
Fixes #166610
---
.../ScriptInterpreter/Python/ScriptInterpreterPython.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
index 35a772c1454df..b4e11d20609d0 100644
--- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -416,6 +416,14 @@ ScriptInterpreterPythonImpl::ScriptInterpreterPythonImpl(Debugger &debugger)
RunSimpleString(run_string.GetData());
run_string.Clear();
+ // Configure pydoc (built-in module) to use the "plain" pager. The default one
+ // doesn't play nice with the statusline.
+ run_string.Printf("run_one_line (%s, 'import pydoc; pydoc.pager = "
+ "pydoc.plainpager')",
+ m_dictionary_name.c_str());
+ RunSimpleString(run_string.GetData());
+ run_string.Clear();
+
run_string.Printf("run_one_line (%s, 'lldb.debugger_unique_id = %" PRIu64
"')",
m_dictionary_name.c_str(), m_debugger.GetID());
More information about the lldb-commits
mailing list