summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/rlcompleter.py4
-rw-r--r--Lib/test/test_rlcompleter.py3
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2022-04-28-20-19-49.gh-issue-92032.ef-UfM.rst2
3 files changed, 7 insertions, 2 deletions
diff --git a/Lib/rlcompleter.py b/Lib/rlcompleter.py
index 98b7930..4ede6dc 100644
--- a/Lib/rlcompleter.py
+++ b/Lib/rlcompleter.py
@@ -117,14 +117,14 @@ class Completer:
matches = []
seen = {"__builtins__"}
n = len(text)
- for word in keyword.kwlist:
+ for word in keyword.kwlist + keyword.softkwlist:
if word[:n] == text:
seen.add(word)
if word in {'finally', 'try'}:
word = word + ':'
elif word not in {'False', 'None', 'True',
'break', 'continue', 'pass',
- 'else'}:
+ 'else', '_'}:
word = word + ' '
matches.append(word)
for nspace in [self.namespace, builtins.__dict__]:
diff --git a/Lib/test/test_rlcompleter.py b/Lib/test/test_rlcompleter.py
index 1f7a6ed..6b5fc9a 100644
--- a/Lib/test/test_rlcompleter.py
+++ b/Lib/test/test_rlcompleter.py
@@ -138,6 +138,9 @@ class TestRlcompleter(unittest.TestCase):
self.assertEqual(completer.complete('el', 0), 'elif ')
self.assertEqual(completer.complete('el', 1), 'else')
self.assertEqual(completer.complete('tr', 0), 'try:')
+ self.assertEqual(completer.complete('_', 0), '_')
+ self.assertEqual(completer.complete('match', 0), 'match ')
+ self.assertEqual(completer.complete('case', 0), 'case ')
def test_duplicate_globals(self):
namespace = {
diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-04-28-20-19-49.gh-issue-92032.ef-UfM.rst b/Misc/NEWS.d/next/Core and Builtins/2022-04-28-20-19-49.gh-issue-92032.ef-UfM.rst
new file mode 100644
index 0000000..f6f0db2
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-04-28-20-19-49.gh-issue-92032.ef-UfM.rst
@@ -0,0 +1,2 @@
+The interpreter can now autocomplete soft keywords, as of now
+``match``, ``case``, and ``_`` (wildcard pattern) from :pep:`634`.