diff -r ecee4ff91bf8 Lib/rlcompleter.py --- a/Lib/rlcompleter.py Tue Sep 22 01:01:17 2015 +0200 +++ b/Lib/rlcompleter.py Tue Sep 22 20:20:16 2015 +0300 @@ -106,6 +106,11 @@ class Completer: n = len(text) for word in keyword.kwlist: if word[:n] == text: + if word in {'else', 'finally', 'try'}: + word = word + ":" + elif word not in {'False', 'None', 'True', + 'break', 'continue', 'pass'}: + word = word + " " matches.append(word) for nspace in [builtins.__dict__, self.namespace]: for word, val in nspace.items(): diff -r ecee4ff91bf8 Lib/test/test_rlcompleter.py --- a/Lib/test/test_rlcompleter.py Tue Sep 22 01:01:17 2015 +0200 +++ b/Lib/test/test_rlcompleter.py Tue Sep 22 20:20:16 2015 +0300 @@ -67,10 +67,14 @@ class TestRlcompleter(unittest.TestCase) 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') + 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 ') + 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:') if __name__ == '__main__': unittest.main()