Hello community, here is the log from the commit of package zsh for openSUSE:Factory checked in at 2014-01-17 13:18:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/zsh (Old) and /work/SRC/openSUSE:Factory/.zsh.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "zsh" Changes: -------- --- /work/SRC/openSUSE:Factory/zsh/zsh.changes 2014-01-07 13:59:55.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.zsh.new/zsh.changes 2014-01-23 15:59:18.000000000 +0100 @@ -1,0 +2,11 @@ +Fri Jan 17 09:42:03 UTC 2014 - [email protected] + +- Update zsh-update-zypper-completion.patch to v0.3 + +------------------------------------------------------------------- +Thu Jan 16 09:44:48 UTC 2014 - [email protected] + +- Add zsh-update-zypper-completion.patch to update zypper + completions, patch by Holger Macht and Thomas Mitterfellner. + +------------------------------------------------------------------- New: ---- zsh-update-zypper-completion.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ zsh.spec ++++++ --- /var/tmp/diff_new_pack.TU6dm2/_old 2014-01-23 15:59:19.000000000 +0100 +++ /var/tmp/diff_new_pack.TU6dm2/_new 2014-01-23 15:59:19.000000000 +0100 @@ -37,6 +37,7 @@ Source17: zshprompt.pl %endif Patch1: trim-unneeded-completions.patch +Patch2: zsh-update-zypper-completion.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %if 0%{?suse_version} Requires(pre): %{install_info_prereq} @@ -94,6 +95,7 @@ %setup -q -n %{name}-%{version} %if 0%{?suse_version} %patch1 -p1 +%patch2 -p1 %endif # Remove executable bit ++++++ zsh-update-zypper-completion.patch ++++++ Index: zsh-5.0.5/Completion/openSUSE/Command/_zypper =================================================================== --- zsh-5.0.5.orig/Completion/openSUSE/Command/_zypper +++ zsh-5.0.5/Completion/openSUSE/Command/_zypper @@ -1,6 +1,7 @@ #compdef zypper # # Copyright (C) 2009 Holger Macht <[email protected]> +# Copyright (C) 2014 Thomas Mitterfellner <[email protected]> # # This file is released under the GPLv2. # @@ -9,60 +10,169 @@ # Toggle verbose completions: zstyle ':completion:*:zypper:*' verbose no # zstyle ':completion:*:zypper-subcommand:*' verbose no # -# version 0.1 +# version 0.3 # # Main dispatcher +function _zypper_caching_policy () { + # rebuild if zsh's cache is older than zypper's + if test /var/cache/zypp/raw -nt "$1"; then + return 0 + else + return 1 + fi +} + _zypper() { + typeset -A opt_args + local context curcontext="$curcontext" state line + if (( CURRENT > 2 )) && [[ ${words[2]} != "help" ]]; then # Remember the subcommand name - local cmd=${words[2]} + local cmd=${words[2]} # Set the context for the subcommand. - curcontext="${curcontext%:*:*}:zypper-subcommand" + curcontext="${curcontext%:*:*}:zypper-subcommand" # Narrow the range of words we are looking at to exclude `zypper' - (( CURRENT-- )) - shift words - - _zypper_cmd_do $cmd + (( CURRENT-- )) + shift words + + _zypper_cmd_do $cmd else - local hline - local -a cmdlist - local tag=0 - _call_program help-commands LANG=C zypper help | sed -e ':a;N;$!ba;s/\n\t\t\t\t/ /g' | while read -A hline; do - # start parsing with "Global Options:" - [[ $hline =~ "^Global Options:" ]] && tag=1 - [[ $tag = 0 ]] && continue - # all commands have to start with lower case letters - [[ $hline[1] =~ ^[A-Z] ]] && continue - (( ${#hline} < 2 )) && continue - - # cut comma at end of command - hline[1]=`echo $hline[1] | sed -e 's/\(^.*\),/\1/'` - - # ${hline[1]%,} truncates the last ',' - cmdlist=($cmdlist "${hline[1]%,}:${hline[2,-1]}") - done - _describe -t zypper-commands 'zypper command' cmdlist + local hline + local -a cmdlist + local tag=0 + _call_program help-commands LANG=C zypper help | sed -e ':a;N;$!ba;s/\n\t\t\t\t/ /g' | while read -A hline; do + # start parsing with "Global Options:" + [[ $hline =~ "^Global Options:" ]] && tag=1 + [[ $tag = 0 ]] && continue + # all commands have to start with lower case letters + [[ $hline[1] =~ ^[A-Z] ]] && continue + (( ${#hline} < 2 )) && continue + + # cut comma at end of command + hline[1]=`echo $hline[1] | sed -e 's/\(^.*\),/\1/'` + + # ${hline[1]%,} truncates the last ',' + cmdlist=($cmdlist "${hline[1]%,}:${hline[2,-1]}") + done + _describe -t zypper-commands 'zypper command' cmdlist fi } +_all_repos() { + local -a repos + repos=( $(zypper -q lr | tail -n +3 | cut -d'|' -f 2) ) + _describe -t repos 'Available repositories' repos && return +} + +_enabled_repos() { + repos=( $(zypper -x lr | grep 'enabled="1"' | cut -d\" -f 2) ) + _describe -t repos 'Available repositories' repos && return +} + +_disabled_repos() { + repos=( $(zypper -x lr | grep 'enabled="0"' | cut -d\" -f 2) ) + _describe -t repos 'Available repositories' repos && return +} + _zypper_cmd_do() { + typeset -A opt_args + local context state line local hline local -a cmdlist local tag=0 + local curcontext="$curcontext" + + zstyle ":completion:${curcontext}:" use-cache on + zstyle ":completion:${curcontext}:" cache-policy _zypper_caching_policy + _call_program help-commands LANG=C zypper help $cmd | while read -A hline; do - # start parsing from "Options:" - [[ $hline =~ "^Command options:" ]] && tag=1 - [[ $tag = 0 ]] && continue - # Option has to start with a '-' - [[ $hline[1] =~ ^- ]] || continue - (( ${#hline} < 2 )) && continue + # start parsing from "Options:" + [[ $hline =~ "^Command options:" ]] && tag=1 + [[ $tag = 0 ]] && continue + # Option has to start with a '-' + [[ $hline[1] =~ ^- ]] || continue + (( ${#hline} < 2 )) && continue - cmdlist=($cmdlist "${hline[1]%,}:${hline[2,-1]}") + cmdlist=($cmdlist "${hline[1]%,}:${hline[2,-1]}") done if [ -n "$cmdlist" ]; then + local -a repos + + # special completion lists for certain options (mainly repos) + case ${words[CURRENT - 1]} in + --from) + repos=( $(zypper -x lr | grep 'enabled="1"' | cut -d\" -f 2) ) + _describe -t repos 'Available repositories' repos && return + ;; + (--enable|-e) + case $cmd in + (mr|modifyrepo) + _disabled_repos && return + ;; + esac + ;; + (--disable|-d) + case $cmd in + (mr|modifyrepo) + _enabled_repos && return + ;; + esac + ;; + (--type|-t) + local -a types + case $cmd in + (if|info|se|search|in|install) + types=( pattern srcpackage package patch ) + _describe -t types 'Package types' types && return + ;; + esac + ;; + esac + + # all options available for the active main command _describe -t zypper-commands 'zypper command' cmdlist + + case $cmd in + (lr|repos) + _all_repos + ;; + (in|install) + local expl + _description files expl 'RPM files' + _files "$expl[@]" -g '*.(#i)rpm(.)' + ;; + esac + + # only suggest packages if at least one character is given + if [[ ${words[CURRENT]} =~ "^[0-9a-zA-Z]" ]] ; then + local -a pkglist + + if ( [[ ${+_zypp_all_raw} -eq 0 ]] || _cache_invalid ZYPPER_ALL_RAW ) && ! _retrieve_cache ZYPPER_ALL_RAW; + then + _zypp_all_raw=$(zypper -x -q se | grep '<solvable' | cut -d \" -f 2,4) + _zypp_all=( $(echo $_zypp_all_raw | grep 'installed' | cut -d\" -f 2) ) + _zypp_not_installed=( $(echo $_zypp_all_raw | grep 'not-installed' | cut -d\" -f 2 ) ) + _zypp_installed=( $(echo $_zypp_all_raw | grep '^installed' | cut -d\" -f 2 ) ) + _store_cache ZYPPER_ALL_RAW _zypp_all_raw _zypp_all _zypp_not_installed _zypp_installed + fi + + case $cmd in + (in|install) + pkglist=( $_zypp_not_installed ) + compadd $pkglist && return + ;; + (rm|remove|up|update) + pkglist=( $_zypp_installed ) + compadd $pkglist && return + ;; + (if|info|se|search) + pkglist=( $_zypp_all ) + compadd $pkglist && return + ;; + esac + fi else _complete fi -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
