Tab Completion feature #820

Closed
gasagna opened this Issue Sep 23, 2011 · 8 comments

Projects

None yet

5 participants

@gasagna
gasagna commented Sep 23, 2011

Hi,

Just an idea, would it be possible to have tab completion of functions' arguments names?

Cheers

Davide

@minrk
Member
minrk commented Sep 23, 2011

Should be possible, I think. We would have to detect that we are inside a function call and identify that function, which I don't think we do, but presumably could.

Example, assuming you have found the function:

import inspect

spec = inspect.getargspec(func)
# only get names of keyword args:
if spec.defaults:
    kwargnames = spec.args[-len(spec.defaults):]
@takluyver
Member

Having just tested, it seems we already can do that. I tried:

In [6]: def f(kinkajou=True):
   ...:     print kinkajou
   ...:     

In [7]: f(k
@minrk
Member
minrk commented Sep 23, 2011

good call, it certainly does work. I probably should have checked :). Closing.

@minrk minrk closed this Sep 23, 2011
@gasagna
gasagna commented Sep 24, 2011

Yes, but the current behaviour seems to show only optional arguments,

def f(koala, kinkajou=True):
    print "I'm a koala"
f(k
kaiser kinkajou= kron

Why not get completion for all arguments?

Davide

@minrk
Member
minrk commented Sep 24, 2011

What is the value in completing positional-only args? You can't specify them by name.

@Midnighter

You can actually, e.g.,

>>> def f(a, b):
...     print a, b

>>> f(a=3, b=4)
3 4

>>> f(b=3, a=4)
4 3

that's using Python 2.7, not sure about earlier versions.

@minrk
Member
minrk commented Sep 26, 2011

Good call, I had forgotten about that! It does work in 2.6, which is the earliest version supported by IPython. How's this?

@CRP
CRP commented May 2, 2014

Hi, sorry if I refer to this very old point, but it is the only existing reference I found to tab-completion for function arguments. The current setup shows all variables in the current namespace along with the function arguments. But the latter are difficult to find if the namespace is crowded. Would it be possible to group all argument together at the beginning or something like that?

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment