How can I provide tab completions to fish shell from my own script? How can I provide tab completions to fish shell from my own script? shell shell

How can I provide tab completions to fish shell from my own script?


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:

For 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