Line completion with custom commands

G

gu

Hi, my Python program can be launched with a range of different options
(or subcommands) like:

$ myProgram doSomething
$ myProgram doSomethingElse
$ myProgram nowDoSomethingDifferent

I want it to use auto-completion with so that if i type "myProgram d" it
returns "myProgram doSomething" and if i type "myProgram n" it renders
"myProgram nowDoSomethingDifferent". This is similar to the average use
of the module rlcompleter, but it does not pick possible completion
options from the filesystem (or from history) but from a custom set of
strings (that correspond to the available options for my program)

Any idea on how to implement this?

I'm aware of the variable PYTHONSTARTUP (that should point to a file I
don't know how to write).

As a working example, django-admin (from the django package) has the
same exact feature i'm looking for
 
S

Steve Holden

gu said:
Hi, my Python program can be launched with a range of different options
(or subcommands) like:

$ myProgram doSomething
$ myProgram doSomethingElse
$ myProgram nowDoSomethingDifferent

I want it to use auto-completion with so that if i type "myProgram d" it
returns "myProgram doSomething" and if i type "myProgram n" it renders
"myProgram nowDoSomethingDifferent". This is similar to the average use
of the module rlcompleter, but it does not pick possible completion
options from the filesystem (or from history) but from a custom set of
strings (that correspond to the available options for my program)

Any idea on how to implement this?

I'm aware of the variable PYTHONSTARTUP (that should point to a file I
don't know how to write).

As a working example, django-admin (from the django package) has the
same exact feature i'm looking for

The issue here is that Python doesn't get control until afer you've hit
RETURN on the command line. so nothing you can do in your program or
interpreter setup will have any effect on how the command shell behaves.

regards
Steve
 
G

gu

Steve said:
The issue here is that Python doesn't get control until afer you've hit
RETURN on the command line. so nothing you can do in your program or
interpreter setup will have any effect on how the command shell behaves.

regards
Steve

I see, but how does django-admin work, then?
 
G

gu

Steve said:
The issue here is that Python doesn't get control until afer you've hit
RETURN on the command line. so nothing you can do in your program or
interpreter setup will have any effect on how the command shell behaves.

regards
Steve

I see, but how does django-admin work, then?
 
S

Steve Holden

gu said:
I see, but how does django-admin work, then?
Probably the issue you has was not knowing the name of the feature. When
I asked Google to tell me about django-admin command completion it said:

http://code.djangoproject.com/ticket/1240

as the first hit. As you will see, this is done by configuring the shell
to know about the specific commands it has to deal with. Enjoy!

regards
Steve
 
G

gu

Marco said:
from bash:

complete -W "doSomething doSomethingElse doSomethingDifferent" myProgram

This worked like a charm, thank you so much. Is this available for bash
only or any shell?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,534
Members
45,007
Latest member
obedient dusk

Latest Threads

Top