summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFacundo Batista <facundobatista@gmail.com>2008-07-02 16:52:55 (GMT)
committerFacundo Batista <facundobatista@gmail.com>2008-07-02 16:52:55 (GMT)
commit66c527755d0f751e4239328558082bf22f52d361 (patch)
tree3baf2dd3b7dc2aa79c29bda4e0a7e29d24f2353b
parent146b7ab818cadccf91ad98e64cfefb77705da0ca (diff)
downloadcpython-66c527755d0f751e4239328558082bf22f52d361.zip
cpython-66c527755d0f751e4239328558082bf22f52d361.tar.gz
cpython-66c527755d0f751e4239328558082bf22f52d361.tar.bz2
Issue #449227: Now with the rlcompleter module, callable objects are
added a '(' when completed.
-rw-r--r--Doc/library/rlcompleter.rst6
-rw-r--r--Lib/rlcompleter.py20
-rw-r--r--Misc/NEWS3
3 files changed, 20 insertions, 9 deletions
diff --git a/Doc/library/rlcompleter.rst b/Doc/library/rlcompleter.rst
index 6816d39..060f296 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. <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
diff --git a/Lib/rlcompleter.py b/Lib/rlcompleter.py
index 36965e6..a08b825 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 36afc09..2a9aefe 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__).