[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