Issue #25209: rlcomplete now can add a space or a colon after completed keyword.

This commit is contained in:
Serhiy Storchaka 2015-09-27 13:26:03 +03:00
parent 36b3fbb0ee
commit 8ace8e99b3
3 changed files with 17 additions and 4 deletions

View file

@ -106,6 +106,12 @@ class Completer:
n = len(text) n = len(text)
for word in keyword.kwlist: for word in keyword.kwlist:
if word[:n] == text: if word[:n] == text:
if word in {'finally', 'try'}:
word = word + ':'
elif word not in {'False', 'None', 'True',
'break', 'continue', 'pass',
'else'}:
word = word + ' '
matches.append(word) matches.append(word)
for nspace in [builtins.__dict__, self.namespace]: for nspace in [builtins.__dict__, self.namespace]:
for word, val in nspace.items(): for word, val in nspace.items():

View file

@ -67,10 +67,15 @@ class TestRlcompleter(unittest.TestCase):
def test_complete(self): def test_complete(self):
completer = rlcompleter.Completer() completer = rlcompleter.Completer()
self.assertEqual(completer.complete('', 0), '\t') self.assertEqual(completer.complete('', 0), '\t')
self.assertEqual(completer.complete('a', 0), 'and') self.assertEqual(completer.complete('a', 0), 'and ')
self.assertEqual(completer.complete('a', 1), 'as') self.assertEqual(completer.complete('a', 1), 'as ')
self.assertEqual(completer.complete('as', 2), 'assert') self.assertEqual(completer.complete('as', 2), 'assert ')
self.assertEqual(completer.complete('an', 0), 'and') self.assertEqual(completer.complete('an', 0), 'and ')
self.assertEqual(completer.complete('pa', 0), 'pass')
self.assertEqual(completer.complete('Fa', 0), 'False')
self.assertEqual(completer.complete('el', 0), 'elif ')
self.assertEqual(completer.complete('el', 1), 'else')
self.assertEqual(completer.complete('tr', 0), 'try:')
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

View file

@ -27,6 +27,8 @@ Core and Builtins
Library Library
------- -------
- Issue #25209: rlcomplete now can add a space or a colon after completed keyword.
- Issue #22241: timezone.utc name is now plain 'UTC', not 'UTC-00:00'. - Issue #22241: timezone.utc name is now plain 'UTC', not 'UTC-00:00'.
- Issue #23517: fromtimestamp() and utcfromtimestamp() methods of - Issue #23517: fromtimestamp() and utcfromtimestamp() methods of