##// END OF EJS Templates
for modules which define __all__, complete only on those. After a patch by...
fperez -
r79:bf540630
parent child
Show More
@@ -185,21 +185,29 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.extend(get_class_members(object.__class__))
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
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