From 7fa8ba6e312d3cd28b0d0b05dd0c18d89e1d3e393c242bf3b09d375f84d60112 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ismail=20D=C3=B6nmez?= Date: Fri, 17 Jan 2014 09:42:38 +0000 Subject: [PATCH] - Update zsh-update-zypper-completion.patch to v0.3 OBS-URL: https://build.opensuse.org/package/show/shells/zsh?expand=0&rev=129 --- zsh-update-zypper-completion.patch | 200 ++++++++++++++++++----------- zsh.changes | 5 + 2 files changed, 131 insertions(+), 74 deletions(-) diff --git a/zsh-update-zypper-completion.patch b/zsh-update-zypper-completion.patch index 659f565..a5f5b4d 100644 --- a/zsh-update-zypper-completion.patch +++ b/zsh-update-zypper-completion.patch @@ -1,31 +1,31 @@ -Index: zsh-5.0.4/Completion/openSUSE/Command/_zypper +Index: zsh-5.0.5/Completion/openSUSE/Command/_zypper =================================================================== ---- zsh-5.0.4.orig/Completion/openSUSE/Command/_zypper -+++ zsh-5.0.4/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 -+# Copyright (C) 2013 Thomas Mitterfellner ++# Copyright (C) 2014 Thomas Mitterfellner # # This file is released under the GPLv2. # -@@ -9,11 +10,23 @@ +@@ -9,60 +10,169 @@ # Toggle verbose completions: zstyle ':completion:*:zypper:*' verbose no # zstyle ':completion:*:zypper-subcommand:*' verbose no # -# version 0.1 -+# version 0.2 ++# version 0.3 # # Main dispatcher +function _zypper_caching_policy () { -+ # rebuild if cache is more than a week old -+ if test /var/cache/zypp/raw -nt "$1"; then -+ return 0 -+ else -+ return 1 -+ fi ++ # 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() { @@ -34,17 +34,57 @@ Index: zsh-5.0.4/Completion/openSUSE/Command/_zypper + if (( CURRENT > 2 )) && [[ ${words[2]} != "help" ]]; then # Remember the subcommand name - local cmd=${words[2]} -@@ -22,7 +35,7 @@ _zypper() { +- 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 +- (( CURRENT-- )) +- shift words - +- _zypper_cmd_do $cmd ++ (( CURRENT-- )) ++ shift words + - _zypper_cmd_do $cmd ++ _zypper_cmd_do $cmd else - local hline -@@ -46,10 +59,33 @@ _zypper() { +- 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 } @@ -76,9 +116,21 @@ Index: zsh-5.0.4/Completion/openSUSE/Command/_zypper + 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 -@@ -62,7 +98,81 @@ _zypper_cmd_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 @@ -86,47 +138,47 @@ Index: zsh-5.0.4/Completion/openSUSE/Command/_zypper + + # 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 -+ ;; ++ --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(.)' -+ ;; ++ (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 @@ -135,26 +187,26 @@ Index: zsh-5.0.4/Completion/openSUSE/Command/_zypper + + 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 '