Shell completions¶
Argparse can generate shell completion scripts for Bash, Zsh, and Fish. The completion scripts support completing options, commands, and argument choices.
The Parser methods :get_bash_complete()
, :get_zsh_complete()
, and
:get_fish_complete()
return completion scripts as a string.
Adding a completion option or command¶
A --completion
option can be added to a parser using the
:add_complete([value])
method. The optional value
argument is a string
or table used to configure the option (by calling the option with value
).
1 2 | local parser = argparse()
:add_complete()
|
$ lua script.lua -h
Usage: script.lua [-h] [--completion {bash,zsh,fish}]
Options:
-h, --help Show this help message and exit.
--completion {bash,zsh,fish}
Output a shell completion script for the specified shell.
A similar completion
command can be added to a parser using the
:add_complete_command([value])
method.
Using completions¶
Bash¶
Save the generated completion script at
/usr/share/bash-completion/completions/script.lua
or
~/.local/share/bash-completion/completions/script.lua
.
Alternatively, add the following line to the ~/.bashrc
:
source <(script.lua --completion bash)
Zsh¶
Save the completion script in the /usr/share/zsh/site-functions/
directory
or any directory in the $fpath
. The file name should be an underscore
followed by the program name. A new directory can be added to to the $fpath
by adding e.g. fpath=(~/.zfunc $fpath)
in the ~/.zshrc
before
compinit
.
Fish¶
Save the completion script at
/usr/share/fish/vendor_completions.d/script.lua.fish
or
~/.config/fish/completions/script.lua.fish
.
Alternatively, add the following line to the file ~/.config/fish/config.fish
:
script.lua --completion fish | source