summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2018-09-07 11:58:52 -0400
committerAllan McRae <allan@archlinux.org>2018-10-21 19:33:07 +1000
commitc887d2cf00d7c2238edd1d317b8c887e774b6d3f (patch)
treec3ca556caba482bb39cbee3faef132ab7954ccb5
parentac959bb9c6ce549047a954109ae825158855e386 (diff)
downloadpacman-c887d2cf00d7c2238edd1d317b8c887e774b6d3f.tar.xz
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> Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--scripts/completion/bash_completion.in18
1 files 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