Show More
@@ -185,21 +185,29 b' class Completer:' | |||||
185 |
|
185 | |||
186 | if not m: |
|
186 | if not m: | |
187 | return [] |
|
187 | return [] | |
|
188 | ||||
188 | expr, attr = m.group(1, 3) |
|
189 | expr, attr = m.group(1, 3) | |
189 | try: |
|
190 | try: | |
190 | object = eval(expr, self.namespace) |
|
191 | object = eval(expr, self.namespace) | |
191 | except: |
|
192 | except: | |
192 | object = eval(expr, self.global_namespace) |
|
193 | object = eval(expr, self.global_namespace) | |
193 | words = [w for w in dir(object) if isinstance(w, basestring)] |
|
194 | ||
194 | if hasattr(object,'__class__'): |
|
195 | # for modules which define __all__, complete only on those. | |
195 | words.append('__class__') |
|
196 | if type(object) == types.ModuleType and hasattr(object, '__all__'): | |
196 |
words |
|
197 | words = getattr(object, '__all__') | |
|
198 | else: | |||
|
199 | words = dir(object) | |||
|
200 | if hasattr(object,'__class__'): | |||
|
201 | words.append('__class__') | |||
|
202 | words.extend(get_class_members(object.__class__)) | |||
|
203 | ||||
|
204 | # filter out non-string attributes which may be stuffed by dir() calls | |||
|
205 | # and poor coding in third-party modules | |||
|
206 | words = [w for w in words | |||
|
207 | if isinstance(w, basestring) and w != "__builtins__"] | |||
|
208 | # Build match list to return | |||
197 | n = len(attr) |
|
209 | n = len(attr) | |
198 | matches = [] |
|
210 | return ["%s.%s" % (expr, w) for w in words if w[:n] == attr ] | |
199 | for word in words: |
|
|||
200 | if word[:n] == attr and word != "__builtins__": |
|
|||
201 | matches.append("%s.%s" % (expr, word)) |
|
|||
202 | return matches |
|
|||
203 |
|
211 | |||
204 | class IPCompleter(Completer): |
|
212 | class IPCompleter(Completer): | |
205 | """Extension of the completer class with IPython-specific features""" |
|
213 | """Extension of the completer class with IPython-specific features""" |
@@ -1,5 +1,10 b'' | |||||
1 | 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu> |
|
1 | 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu> | |
2 |
|
2 | |||
|
3 | * IPython/completer.py (Completer.attr_matches): for modules which | |||
|
4 | define __all__, complete only on those. After a patch by Jeffrey | |||
|
5 | Collins <jcollins-AT-boulder.net>. Also, clean up and speed up | |||
|
6 | this routine. | |||
|
7 | ||||
3 | * IPython/Logger.py (Logger.log): fix a history handling bug. I |
|
8 | * IPython/Logger.py (Logger.log): fix a history handling bug. I | |
4 | don't know if this is the end of it, but the behavior now is |
|
9 | don't know if this is the end of it, but the behavior now is | |
5 | certainly much more correct. Note that coupled with macros, |
|
10 | certainly much more correct. Note that coupled with macros, |
General Comments 0
You need to be logged in to leave comments.
Login now