[IPython-dev] function specific tab completion via annotations

Matthias BUSSONNIER bussonniermatthias@gmail....
Tue Dec 18 02:22:41 CST 2012


Le 18 déc. 2012 à 09:03, Robert McGibbon a écrit :

> It's not working in the notebook with the argument specific completions, but the return value completion is working. There must be some issue with a difference in the line splitting with readline and without. I'll track it down.

That's probably the js that removes everything between bracket by nothing
(IIRC, first completer was doing that.)

baz(notevaluated).<tab>
to 
baz.<tab>

before completion. (or is it tooltip... that does it) 

Or a security about 'as you type' 

Actually every key press recall the completer once it has been invoked and it decide to 'kill itself' 
on certain things (like closing bracket, spaces...) 

That would be 

IPython/frontend/html/notebook/static/js/completer.js ~L 100 smth.
-- 
Matthias



> 
> -Robert
> 
> On Dec 17, 2012, at 11:51 PM, Brian Granger wrote:
> 
>> This looks really great.  Have you tested it with the notebook yet?  I
>> would imagine that it should already work there as well.
>> 
>> On Mon, Dec 17, 2012 at 11:27 PM, Robert McGibbon <rmcgibbo@gmail.com> wrote:
>>> Hey,
>>> 
>>> I just posted a new PR for annotation based custom tab completion.
>>> https://github.com/ipython/ipython/pull/2701
>>> 
>>> The code is fairly complex (~1000 new lines), so I assume that there are
>>> bugs. For that reason (and because its fun!), I encourage people
>>> to try taking it out for a spin.
>>> 
>>> 
>>> It lets you do things like this:
>>> 
>>> In [1]: from IPython.extensions.completion import tab_complete, globs_to,
>>> literal
>>> 
>>> In [2]: @tab_complete
>>> ...: def baz(x) -> str:
>>> ...:     pass
>>> ...:
>>> 
>>> In [3]: baz(notevaluated).<TAB>
>>> .capitalize  .find        .isspace     .partition   .rstrip      .translate
>>> .center      .format      .istitle     .replace     .split       .upper
>>> .count       .index       .isupper     .rfind       .splitlines  .zfill
>>> .decode      .isalnum     .join        .rindex      .startswith
>>> .encode      .isalpha     .ljust       .rjust       .strip
>>> .endswith    .isdigit     .lower       .rpartition  .swapcase
>>> .expandtabs  .islower     .lstrip      .rsplit      .title
>>> 
>>> 
>>> And this:
>>> 
>>> In [4]: @tab_complete
>>>  ...: def foo(x : globs_to('*.txt'), mode : literal('r', 'w')):
>>>  ...:     pass
>>>  ...:
>>> 
>>> In [5]: foo(<TAB>
>>> 'COPYING.txt'        'dist/'              'setupext/'
>>> 'IPython/'           'docs/'              'tools/'
>>> '__pycache__/'       'ipython.egg-info/'
>>> 'build/'             'scripts/'
>>> 
>>> In[6]: foo('COPYING.txt', <TAB>
>>> 'r', 'w'
>>> 
>>> 
>>> 
>>> -Robert
>>> 
>>> _______________________________________________
>>> IPython-dev mailing list
>>> IPython-dev@scipy.org
>>> http://mail.scipy.org/mailman/listinfo/ipython-dev
>>> 
>> 
>> 
>> 
>> -- 
>> Brian E. Granger
>> Cal Poly State University, San Luis Obispo
>> bgranger@calpoly.edu and ellisonbg@gmail.com
>> _______________________________________________
>> IPython-dev mailing list
>> IPython-dev@scipy.org
>> http://mail.scipy.org/mailman/listinfo/ipython-dev
> 
> _______________________________________________
> IPython-dev mailing list
> IPython-dev@scipy.org
> http://mail.scipy.org/mailman/listinfo/ipython-dev



More information about the IPython-dev mailing list