Files
flatpak/completion/flatpak
Matthew Leeds 9d9758c36d completion: Only show files with the correct prefix
Currently flatpak's bash completion is a bit broken. It shows all files
with the appropriate extension (.flatpak or .flatpakref) rather than
just the ones starting with the characters you've already typed. So this
commit fixes that behavior by using the -X compgen option rather than
-G. For example, here's the old behavior:

$ flatpak install e<TAB>
bijiben.flatpak  eos              eos-runtimes
builder.flatpak  eos-apps         eos-sdk

and here's the new behavior:

$ flatpak install e<TAB>
eos            eos-apps       eos-runtimes   eos-sdk
$ flatpak install b<TAB>
bijiben.flatpak  builder.flatpak

Closes: #1645
Approved by: alexlarsson
2018-05-14 07:35:26 +00:00

41 lines
1.3 KiB
Plaintext
Executable File

# Check for bash
[ -z "$BASH_VERSION" ] && return
####################################################################################################
__flatpak() {
local IFS=$'\n'
local cur=`_get_cword :`
RES=($(flatpak complete "${COMP_LINE}" "${COMP_POINT}" "${cur}"))
COMPREPLY=()
for i in "${!RES[@]}"; do
if [[ "${RES[$i]}" = "__FLATPAK_FILE" ]]; then
declare -a COMPGEN_OPTS=('-f')
elif [[ "${RES[$i]}" = "__FLATPAK_BUNDLE_FILE" ]]; then
declare -a COMPGEN_OPTS=('-f' '-X' '!*.flatpak')
elif [[ "${RES[$i]}" = "__FLATPAK_BUNDLE_OR_REF_FILE" ]]; then
declare -a COMPGEN_OPTS=('-f' '-X' '!*.flatpak@(|ref)')
elif [[ "${RES[$i]}" = "__FLATPAK_DIR" ]]; then
declare -a COMPGEN_OPTS=('-d')
else
declare -a COMPGEN_OPTS=()
fi
if [[ ${#COMPGEN_OPTS[@]} -ne 0 ]]; then
if [[ "${cur}" = "=" ]]; then
CUR=""
else
CUR="${cur}"
fi
COMPREPLY=("${COMPREPLY[@]}" $(compgen ${COMPGEN_OPTS[@]} -- "${CUR}") )
else
COMPREPLY=("${COMPREPLY[@]}" "${RES[$i]}")
fi
done
}
####################################################################################################
complete -o nospace -F __flatpak flatpak