Issue #23441: rcompleter now prints a tab character instead of displaying
possible completions for an empty word.

Initial patch by Martin Sekera.
diff --git a/Lib/rlcompleter.py b/Lib/rlcompleter.py
index 94f9341..d517c0e 100644
--- a/Lib/rlcompleter.py
+++ b/Lib/rlcompleter.py
@@ -73,6 +73,12 @@
         if self.use_main_ns:
             self.namespace = __main__.__dict__
 
+        if not text.strip():
+            if state == 0:
+                return '\t'
+            else:
+                return None
+
         if state == 0:
             if "." in text:
                 self.matches = self.attr_matches(text)
diff --git a/Lib/test/test_rlcompleter.py b/Lib/test/test_rlcompleter.py
index 11a7bd2..2da7fce 100644
--- a/Lib/test/test_rlcompleter.py
+++ b/Lib/test/test_rlcompleter.py
@@ -1,4 +1,3 @@
-from test import support
 import unittest
 import builtins
 import rlcompleter
@@ -65,9 +64,14 @@
                          ['egg.{}('.format(x) for x in dir(str)
                           if x.startswith('s')])
 
-def test_main():
-    support.run_unittest(TestRlcompleter)
+    def test_complete(self):
+        completer = rlcompleter.Completer()
+        self.assertEqual(completer.complete('', 0), '\t')
+        self.assertEqual(completer.complete('a', 0), 'and')
+        self.assertEqual(completer.complete('a', 1), 'as')
+        self.assertEqual(completer.complete('as', 2), 'assert')
+        self.assertEqual(completer.complete('an', 0), 'and')
 
 
 if __name__ == '__main__':
-    test_main()
+    unittest.main()
diff --git a/Misc/NEWS b/Misc/NEWS
index 2755a39..9bacb3a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -66,6 +66,9 @@
 Library
 -------
 
+- Issue #23441: rcompleter now prints a tab character instead of displaying
+  possible completions for an empty word.  Initial patch by Martin Sekera.
+
 - Issue #17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella.
 
 - Issue #24683: Fixed crashes in _json functions called with arguments of