From: Ronan Pigott rpigott@berkeley.edu
Signed-off-by: Ronan Pigott rpigott@berkeley.edu --- scripts/completion/zsh_completion.in | 96 +++++++++++++++++++++++++++- 1 file changed, 95 insertions(+), 1 deletion(-)
diff --git a/scripts/completion/zsh_completion.in b/scripts/completion/zsh_completion.in index 92fc2382..e4bf3312 100644 --- a/scripts/completion/zsh_completion.in +++ b/scripts/completion/zsh_completion.in @@ -1,4 +1,4 @@ -#compdef pacman pacman.static=pacman pacman-key makepkg +#compdef pacman pacman.static=pacman pacman-conf pacman-key makepkg
# copy this file to /usr/share/zsh/site-functions/_pacman
@@ -496,6 +496,97 @@ _pacman_zsh_comp() { esac }
+_pacman_conf_general_directives=( + 'RootDir' + 'DBPath' + 'CacheDir' + 'HookDir' + 'GPGDir' + 'LogFile' + 'HoldPkg' + 'IgnorePkg' + 'NoUpgrade' + 'NoExtract' + 'Architecture' + 'XferCommand' + 'UseSyslog' + 'Color' + 'TotalDownload' + 'CheckSpace' + 'VerbosePkgLists' + 'DisableDownloadTimeout' + 'NoProgressBar' + 'ParallelDownloads' + 'CleanMethod' + 'SigLevel' + 'LocalFileSigLevel' + 'RemoteFileSigLevel' +) + +_pacman_conf_repo_directives=( + 'Server' + 'SigLevel' + 'Usage' +) + +_pacman_conf_completions_repositories() { + local -a repositories + # If the user specified an alternate config, use those repos + repositories=($(pacman-conf ${(kv)opt_args[(I)-c|--config]} --repo-list )) + typeset -U repositories + compadd "$@" -a repositories +} + +_pacman_conf_directive() { + # Directives use a case-insensitive matcher-list + local casematch="m:{[:lower:][:upper:]}={[:upper:][:lower:]}" + + if [[ -n ${opt_args[(I)-r|--repo]} ]]; then + compadd -M "$casematch" "$@" -a _pacman_conf_repo_directives + else + if [[ $words[$CURRENT] == [iI][lL]* ]]; then + compadd -M "$casematch" "$@" ILoveCandy # Secret completion! + else + compadd -M "$casematch" "$@" -a _pacman_conf_general_directives + fi + fi +} + +_pacman_conf_commands=( + {-l,--repo-list}'[List configured repositories]:*: :->repo_list' + {-h,--help}'[Output systax and command line options]:*: :->complete' + {-V,--version}'[Display version and exit]:*: :->complete' +) + +_pacman_conf_options=( + '(-r --repo)'{-r,--repo=}'[Query options for a specific repository]:package repo:_pacman_conf_completions_repositories' + '(-v --verbose)'{-v,--verbose}'[Always show directive names]' +) + +_pacman_conf_options_common=( + '*'{-c,--config=}'[Specify an alternate configuration file]: :_files' + '*'{-R,--rootdir=}'[Specify an alternate insallation root]: :_files' +) + +_pacman_conf() { + _arguments -s : \ + "$_pacman_conf_commands[@]" \ + "$_pacman_conf_options_common[@]" \ + "$_pacman_conf_options[@]" \ + '*:pacman directive:_pacman_conf_directive' + + case $state in + repo_list) + _arguments -s \ + '(-l --repo-list)'{-l,--repo-list} \ + "$_pacman_conf_options_common[@]" + ;; + *) + _message "no more arguments" + ;; + esac +} + _key_shortopts=( '-h[show help]' '-a[Add the specified keys (empty for stdin)]: :_files' @@ -704,6 +795,9 @@ _pacman_comp() { makepkg) _makepkg "$@" ;; + pacman-conf) + _pacman_conf "$@" + ;; pacman-key) _pacman_key "$@" ;;
On 22/8/20 1:20 pm, Ronan Pigott wrote:
From: Ronan Pigott rpigott@berkeley.edu
Signed-off-by: Ronan Pigott rpigott@berkeley.edu
This looks good to me.
Allan
On 08/21/20 at 08:20pm, Ronan Pigott wrote:
From: Ronan Pigott rpigott@berkeley.edu
Signed-off-by: Ronan Pigott rpigott@berkeley.edu
Sure, I guess. pacman-conf is meant for use in scripts; who on Earth is running it in a terminal?
On Thu Sep 3, 2020 at 11:38 AM MST, Andrew Gregory wrote:
Sure, I guess. pacman-conf is meant for use in scripts; who on Earth is running it in a terminal?
I dunno. Anything useful in scripts can be useful in an interactive shell. No one is gonna bother without completions though.
I wanted a list of servers enabled for my repo so I tried 'pacman-conf -r myrepo Server' but no completions makes it kind of a bummer to use.
It's a good tool, but even better with completions. Why not?
On 9/3/20 9:38 PM, Andrew Gregory wrote:
On 08/21/20 at 08:20pm, Ronan Pigott wrote:
From: Ronan Pigott rpigott@berkeley.edu
Signed-off-by: Ronan Pigott rpigott@berkeley.edu
Sure, I guess. pacman-conf is meant for use in scripts; who on Earth is running it in a terminal?
It can be pretty useful for running without options in order to copy-paste your pacman.conf for help, but that's again not really a use case for completions.
...
I guess we want the same completions in bash_completion.in, but given I don't really have a good use for it myself, I'm not sure I'll bother writing it myself...
On 4/9/20 12:24 pm, Eli Schwartz wrote:
On 9/3/20 9:38 PM, Andrew Gregory wrote:
On 08/21/20 at 08:20pm, Ronan Pigott wrote:
From: Ronan Pigott rpigott@berkeley.edu
Signed-off-by: Ronan Pigott rpigott@berkeley.edu
Sure, I guess. pacman-conf is meant for use in scripts; who on Earth is running it in a terminal?
It can be pretty useful for running without options in order to copy-paste your pacman.conf for help, but that's again not really a use case for completions.
I was working on the principle, that if someone submitted them, we can include them. Adds no overhead, beyond keeping them up to date.
I guess we want the same completions in bash_completion.in, but given I don't really have a good use for it myself, I'm not sure I'll bother writing it myself...
If someone submits, I will include them. If not, I don't care.
A
pacman-dev@lists.archlinux.org