You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.3 KiB
Bash
34 lines
1.3 KiB
Bash
2 years ago
|
# Invoke tab-completion script to be sourced with Bash shell.
|
||
|
# Known to work on Bash 3.x, untested on 4.x.
|
||
|
|
||
|
_complete_invoke() {
|
||
|
local candidates
|
||
|
|
||
|
# COMP_WORDS contains the entire command string up til now (including
|
||
|
# program name).
|
||
|
# We hand it to Invoke so it can figure out the current context: spit back
|
||
|
# core options, task names, the current task's options, or some combo.
|
||
|
candidates=`invoke --complete -- ${COMP_WORDS[*]}`
|
||
|
|
||
|
# `compgen -W` takes list of valid options & a partial word & spits back
|
||
|
# possible matches. Necessary for any partial word completions (vs
|
||
|
# completions performed when no partial words are present).
|
||
|
#
|
||
|
# $2 is the current word or token being tabbed on, either empty string or a
|
||
|
# partial word, and thus wants to be compgen'd to arrive at some subset of
|
||
|
# our candidate list which actually matches.
|
||
|
#
|
||
|
# COMPREPLY is the list of valid completions handed back to `complete`.
|
||
|
COMPREPLY=( $(compgen -W "${candidates}" -- $2) )
|
||
|
}
|
||
|
|
||
|
|
||
|
# Tell shell builtin to use the above for completing our invocations.
|
||
|
# * -F: use given function name to generate completions.
|
||
|
# * -o default: when function generates no results, use filenames.
|
||
|
# * positional args: program names to complete for.
|
||
|
complete -F _complete_invoke -o default invoke inv
|
||
|
|
||
|
# vim: set ft=sh :
|
||
|
|