[pacman-dev] [PATCH 1/2] 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 <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 -- 2.18.0
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;; -- 2.18.0
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
participants (2)
-
Allan McRae
-
Eli Schwartz