From c887d2cf00d7c2238edd1d317b8c887e774b6d3f Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Fri, 7 Sep 2018 11:58:52 -0400 Subject: bash-completion: don't complete filenames when they're not wanted Filename completion should only be generated for makepkg, when using the options -p or --config... which means we should offer option completions by default. Filename completion for pacman, should not be generated when using -Qu, or -F without -o. Signed-off-by: Eli Schwartz Signed-off-by: Allan McRae --- scripts/completion/bash_completion.in | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/scripts/completion/bash_completion.in b/scripts/completion/bash_completion.in index d99fba53..31b41f71 100644 --- a/scripts/completion/bash_completion.in +++ b/scripts/completion/bash_completion.in @@ -71,10 +71,13 @@ _pacman_key() { } _makepkg() { + compopt +o default local cur opts prev COMPREPLY=() _get_comp_words_by_ref cur prev - if [[ $cur = -* && ! $prev =~ ^-(-(config|help|key|version)$|\w*[Vhp]) ]]; then + if [[ $prev = @(-p|--config) ]]; then + compopt -o default + elif [[ ! $prev =~ ^-(-(config|help|key|version)$|\w*[Vh]) ]]; then opts=('allsource asdeps check clean cleanbuild config force geninteg help holdver ignorearch install key log needed noarchive nobuild nocheck nocolor noconfirm nodeps noextract noprepare noprogressbar nosign @@ -101,6 +104,7 @@ _pacman_repo_list() { } _pacman() { + compopt -o default local common core cur database files prev query remove sync upgrade o COMPREPLY=() _get_comp_words_by_ref cur prev @@ -131,12 +135,14 @@ _pacman() { D|R) _pacman_pkg Qq;; F) - _arch_incomp 'l list' && _pacman_pkg Slq - ;; + { _arch_incomp 'l list' && _pacman_pkg Slq ; } || + _arch_incomp 'o owns' || + compopt +o default;; Q) { _arch_incomp 'g groups' && _pacman_pkg Qg sort; } || { _arch_incomp 'p file' && _pacman_file; } || - _arch_incomp 'o owns' || _arch_incomp 'u upgrades' || + { _arch_incomp 'u upgrades' && compopt +o default; } || + _arch_incomp 'o owns' || _pacman_pkg Qq;; S) { _arch_incomp 'g groups' && _pacman_pkg Sg; } || @@ -153,8 +159,8 @@ _pacman_file() { compopt -o filenames; _filedir 'pkg.tar*' } -complete -F _pacman -o default pacman -complete -F _makepkg -o default makepkg +complete -F _pacman pacman +complete -F _makepkg makepkg complete -F _pacman_key -o default pacman-key # ex:et ts=2 sw=2 ft=sh -- cgit v1.2.3-54-g00ecf