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 eschwartz@archlinux.org --- 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
We don't need exact package name completions for something that expects a regular expression *search*, which is what we currently do. If you want a package name completion for a search, you don't need the search.
This change is consistent with the current state of zsh completions.
Fixes FS#59965
Signed-off-by: Eli Schwartz eschwartz@archlinux.org --- scripts/completion/bash_completion.in | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/scripts/completion/bash_completion.in b/scripts/completion/bash_completion.in index 31b41f71..c3249cd0 100644 --- a/scripts/completion/bash_completion.in +++ b/scripts/completion/bash_completion.in @@ -141,12 +141,14 @@ _pacman() { Q) { _arch_incomp 'g groups' && _pacman_pkg Qg sort; } || { _arch_incomp 'p file' && _pacman_file; } || + { _arch_incomp 's search' && compopt +o default; } || { _arch_incomp 'u upgrades' && compopt +o default; } || _arch_incomp 'o owns' || _pacman_pkg Qq;; S) { _arch_incomp 'g groups' && _pacman_pkg Sg; } || { _arch_incomp 'l list' && _pacman_repo_list; } || + { _arch_incomp 's search' && compopt +o default; } || _pacman_pkg Slq;; U) _pacman_file;;
On 8/9/18 1:58 am, Eli Schwartz wrote:
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 eschwartz@archlinux.org
This looks OK and passed a very quick test.
A
pacman-dev@lists.archlinux.org