<div class="gmail_quote">On Mon, Apr 2, 2012 at 15:46, Zachary Pincus <span dir="ltr">&lt;<a href="mailto:zachary.pincus@yale.edu">zachary.pincus@yale.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hi all,<br>
<br>
The normal ipython tab-completer is pretty useful in that one can do things like:<br>
a(b.[TAB]<br>
to get a list of b&#39;s attributes while writing out the function call. Similarly,<br>
open(&#39;./[TAB]<br>
will list the documents in the cwd.<br>
<br>
However, after enabling the &quot;greedy completer&quot;, very useful in its own right, this behavior goes away. e.g.<br>
a(b.[TAB]<br>
gives nothing.<br>
<br>
This comes down to the difference between DELIMS and GREEDY_DELIMS in IPython/core/completer.py:183.<br>
<br>
Is there any way that the greedy completer could have a larger set of delimiters? Though, in some sense the current GREEDY_DELIMS is already too large a set, as it includes the space char, which causes the following problems:<br>


def a(b,c): return b+c<br>
a(&#39;a&#39;,&#39;b&#39;).[TAB] # works<br>
a(&#39;a&#39;, &#39;b&#39;).[TAB] # doesn&#39;t work -- the space breaks the completer.<br>
<br>
Is there any to make the greedy completer to be a bit smarter without it having to be a full python parser? Maybe some logic  about what to do with balanced vs. unbalanced parens/braces might be appropriate? This sort of thing would fix both of the problems above.<br>


<br>
If people agree this is feasible, I could look into a patch, but I&#39;m curious if anyone&#39;s tried/failed at this before...<br></blockquote><div><br></div><div>This should absolutely be doable, and the current behavior should be considered a bug.  I think greedy completion should produce a strict superset of the completions from the regular competer.  The simplest way to guarantee that this happens might be to *not* replace the completer like we do, but call the original completer, then call a *different* one that only does the item-completion, and merge the results.</div>

<div><br></div><div>-MinRK</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks,<br>
Zach<br>
_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
</blockquote></div><br>