]> granicus.if.org Git - python/commitdiff
Issue #449227: Now with the rlcompleter module, callable objects are
authorFacundo Batista <facundobatista@gmail.com>
Wed, 2 Jul 2008 16:52:55 +0000 (16:52 +0000)
committerFacundo Batista <facundobatista@gmail.com>
Wed, 2 Jul 2008 16:52:55 +0000 (16:52 +0000)
added a '(' when completed.

Doc/library/rlcompleter.rst
Lib/rlcompleter.py
Misc/NEWS

index 6816d391049869153a411f7c25e0d0ce0970fc61..060f2969e61fea484129e92029e38cfed2e6f4de 100644 (file)
@@ -20,9 +20,9 @@ Example::
    >>> import readline
    >>> readline.parse_and_bind("tab: complete")
    >>> readline. <TAB PRESSED>
-   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
index 36965e6eecc795c555a46c4f9d008c11d5ed2bc8..a08b825708799404d289ad5d4163400715c86639 100644 (file)
@@ -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):
index 36afc09d6ce4ba4fc2eed1b52aa787f8fc38a0ec..2a9aefedb124cad98027ef29b6d096e8c1612ac3 100644 (file)
--- 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__).