From 66c527755d0f751e4239328558082bf22f52d361 Mon Sep 17 00:00:00 2001 From: Facundo Batista Date: Wed, 2 Jul 2008 16:52:55 +0000 Subject: [PATCH] Issue #449227: Now with the rlcompleter module, callable objects are added a '(' when completed. --- Doc/library/rlcompleter.rst | 6 +++--- Lib/rlcompleter.py | 20 ++++++++++++++------ Misc/NEWS | 3 +++ 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Doc/library/rlcompleter.rst b/Doc/library/rlcompleter.rst index 6816d391049..060f2969e61 100644 --- a/Doc/library/rlcompleter.rst +++ b/Doc/library/rlcompleter.rst @@ -20,9 +20,9 @@ Example:: >>> import readline >>> readline.parse_and_bind("tab: complete") >>> readline. - readline.__doc__ readline.get_line_buffer readline.read_init_file - readline.__file__ readline.insert_text readline.set_completer - readline.__name__ readline.parse_and_bind + readline.__doc__ readline.get_line_buffer( readline.read_init_file( + readline.__file__ readline.insert_text( readline.set_completer( + readline.__name__ readline.parse_and_bind( >>> readline. The :mod:`rlcompleter` module is designed for use with Python's interactive diff --git a/Lib/rlcompleter.py b/Lib/rlcompleter.py index 36965e6eecc..a08b8257087 100644 --- a/Lib/rlcompleter.py +++ b/Lib/rlcompleter.py @@ -92,6 +92,11 @@ class Completer: except IndexError: return None + def _callable_postfix(self, val, word): + if callable(val): + word = word + "(" + return word + def global_matches(self, text): """Compute matches when text is a simple name. @@ -102,12 +107,13 @@ class Completer: import keyword matches = [] n = len(text) - for list in [keyword.kwlist, - __builtin__.__dict__, - self.namespace]: - for word in list: + for word in keyword.kwlist: + if word[:n] == text: + matches.append(word) + for nspace in [__builtin__.__dict__, self.namespace]: + for word, val in nspace.items(): if word[:n] == text and word != "__builtins__": - matches.append(word) + matches.append(self._callable_postfix(val, word)) return matches def attr_matches(self, text): @@ -139,7 +145,9 @@ class Completer: n = len(attr) for word in words: if word[:n] == attr and word != "__builtins__": - matches.append("%s.%s" % (expr, word)) + val = getattr(object, word) + word = self._callable_postfix(val, "%s.%s" % (expr, word)) + matches.append(word) return matches def get_class_members(klass): diff --git a/Misc/NEWS b/Misc/NEWS index 36afc09d6ce..2a9aefedb12 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -33,6 +33,9 @@ Core and Builtins Library ------- +- Issue #449227: Now with the rlcompleter module, callable objects are added + "(" when completed. + - Issue #3190: Pydoc now hides the automatic module attribute __package__ (the handling is now the same as that of other special attributes like __name__).