diff options
Diffstat (limited to 'Completion/Unix/Command/_pkg-config')
-rw-r--r-- | Completion/Unix/Command/_pkg-config | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/Completion/Unix/Command/_pkg-config b/Completion/Unix/Command/_pkg-config index e44b36897..43773967e 100644 --- a/Completion/Unix/Command/_pkg-config +++ b/Completion/Unix/Command/_pkg-config @@ -1,14 +1,17 @@ #compdef pkg-config -local arguments packages curcontext="$curcontext" state line ret=1 +local arguments packages curcontext="$curcontext" state line expl ret=1 declare -A opt_args +# Up-to-date as of pkg-config 0.29-4 (debian package) man page synopsis arguments=( "--modversion[print the version information of a given package]" + "--version[print version information of pkg-config itself]" "--atleast-pkgconfig-version=[require given version of pkg-config]:minimum version" "(- *)"{--help,-\?}"[display a help message]" "(- *)--usage[display brief usage message]" "--print-errors[cause errors to be printed]" + "--short-errors[print short error messages]" "--silence-errors[prevent the printing of errors]" "--errors-to-stdout[print errors to stdout rather than stderr]" "--cflags[print the preprocessor and compiler flags]" @@ -19,25 +22,45 @@ arguments=( "--libs-only-L[print the -L and -R parts of \"--libs\"]" "--libs-only-l[print the -l part of \"--libs\"]" "--libs-only-other[output other libs]" + "--validate[syntax check a .pc file]" "--list-all[list all known packages]" - "--variable=[return the value of the specified variable]:variable" + "--variable=[return the value of the specified variable]:variable:->variable" "--define-variable=[set the global value for a variable]:name value pair" + "--print-variables[list all variables defined in the package]" "--uninstalled[return success if any \"-uninstalled\" packages are being used]" "--exists[test whether the package exists or not]" "--atleast-version=[test whether the version is at least that of the specified value]:least value" "--exact-version=[test whether the version is exactly that of the specified value]:exact value" "--max-version=[test whether the version is no greater than some specific value]:max version" + "--print-provides[list all modules the package provides]" + "--print-requires[list all modules the package requires]" + "--print-requires-private[list all modules the package requires for static linking (see --static)]" # "--msvc-syntax[output linker flags in a form compatible with MSVC++ (Windows only)]" # "--dont-define-prefix[disables automatic overiding of the variable \"prefix\" (Windows only)]" # "--prefix-variable=[set the name of the variable \"prefix\" (Windows only)]:prefix value" "*: :->packages" ) -_arguments -C $arguments && ret=0 +_arguments -C -S : $arguments && ret=0 -if [[ -n $state ]] ; then - packages=( ${${(f)"$(_call_program packages pkg-config --list-all)"}%% *} ) - _wanted packages expl 'package' compadd -a - packages && ret=0 -fi +case $state in + (packages) + packages=( ${${(f)"$(_call_program packages pkg-config --list-all)"}%% *} ) + _alternative \ + 'packages:package:compadd -a - packages' \ + 'files:package file:_files -g "*.pc(-.)"' \ + && ret=0 + ;; + + (variable) + if [[ $line[1] != '-' ]]; then + local -a variables=( ${${(f)"$(_call_program variables "pkg-config --print-variables -- ${(q)line[1]}")"}} ) + _wanted variables expl 'variable' compadd -a - variables && ret=0 + else + _message "variable" + fi + ;; + +esac return ret |