I am running Ubuntu 13.10 and fish 2.1.0. I want to write myself a Python script to do some tasks from the command line. The script will require command line arguments.
Adapted from zanchey's comment on GitHub:
If you have a program myprog
which takes the --_completion
option, you can write a single completion stub for myprog
that looks like this:
complete --command myprog --arguments '(myprog --_completion (commandline -cp)'
Your program will then get invoked as myprog --_completion myprog some arguments here
, and you can respond with the appropriate completions. It should return only the current token that is being completed (you could also pass this to the program with (commandline -ct)
, or tokenise it yourself), followed optionally by a tab and a short description. Multiple completions are separated with new lines.
Notes:
--_completion
is a convention suggested by the python-selfcompletion library, but you can use anything you want, and this answer is not Python-specificFor Python scripts specifically, the following libraries may support fish completions at some point in the future (but they don't yet):
You should create a fish autocomplete function for your script and source
it or put it in ~/.config/fish/completions/myprog.fish
folder.
reference: fish docs