Use cache-policy for _gem
This commit is contained in:
parent
9cbd2b6762
commit
d2ce821cc8
32
src/_gem
32
src/_gem
|
@ -19,6 +19,12 @@
|
||||||
_gem() {
|
_gem() {
|
||||||
local -a gem_general_flags
|
local -a gem_general_flags
|
||||||
|
|
||||||
|
local context curcontext="$curcontext" update_policy
|
||||||
|
|
||||||
|
zstyle -s ":completion:${curcontext}:" cache-policy update_policy
|
||||||
|
[[ -z "$update_policy" ]] && \
|
||||||
|
zstyle ":completion:${curcontext}:" cache-policy _gem_extensions_caching_policy
|
||||||
|
|
||||||
gem_general_flags=("(-h --help)"{-h,--help}"[Get help on this command]"
|
gem_general_flags=("(-h --help)"{-h,--help}"[Get help on this command]"
|
||||||
"(-V --verbose)"{-V,--verbose}"[Set the verbose level of output]"
|
"(-V --verbose)"{-V,--verbose}"[Set the verbose level of output]"
|
||||||
"(-q --quiet)"{-q,--quiet}"[Silence commands]"
|
"(-q --quiet)"{-q,--quiet}"[Silence commands]"
|
||||||
|
@ -28,25 +34,34 @@ _gem() {
|
||||||
$nul_arg
|
$nul_arg
|
||||||
)
|
)
|
||||||
|
|
||||||
extra_gems=$(_call_program commands ${words[1]} list --no-version gem-browse gemedit gem-edit)
|
|
||||||
|
|
||||||
local gem_edit_command="edit[Edit installed gem in editor]"
|
local gem_edit_command="edit[Edit installed gem in editor]"
|
||||||
local gem_clone_command="clone[Clone a gem's source from GitHub]"
|
local gem_clone_command="clone[Clone a gem's source from GitHub]"
|
||||||
local gem_browse_command="browse[browse the gem's homepage]"
|
local gem_browse_command="browse[browse the gem's homepage]"
|
||||||
|
|
||||||
if [ ${#extra_gems} -eq 0 ] ; then
|
unset _gem_extra_commands
|
||||||
|
if ( [[ ${+_gem_extra_commands} -eq 0 ]] || \
|
||||||
|
_cache_invalid "gem_extensions" ) && ! _retrieve_cache "gem_extensions"; then
|
||||||
|
|
||||||
|
_gem_extensions=$(_call_program commands ${words[1]} list --no-version gem-browse gemedit gem-edit)
|
||||||
|
|
||||||
|
_store_cache "gem_extensions" _gem_extensions
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${#_gem_extensions} -eq 0 ] ; then
|
||||||
extra_gem_commands_desc=""
|
extra_gem_commands_desc=""
|
||||||
extra_gem_commands=""
|
extra_gem_commands=""
|
||||||
elif [[ "${extra_gems[(i)gem-browse]}" -le ${#extra_gems} ]] ; then
|
elif [[ "${_gem_extensions[(i)gem-browse]}" -le ${#_gem_extensions} ]] ; then
|
||||||
extra_gem_commands_desc=(${gem_edit_command} ${gem_browse_command} ${gem_clone_command})
|
extra_gem_commands_desc=(${gem_edit_command} ${gem_browse_command} ${gem_clone_command})
|
||||||
extra_gem_commands=(clone browse edit)
|
extra_gem_commands=(clone browse edit)
|
||||||
|
|
||||||
elif [[ "${extra_gems[(r)gem-edit]}" -le ${#extra_gems} ]] \
|
elif [[ "${_gem_extensions[(r)gem-edit]}" -le ${#_gem_extensions} ]] \
|
||||||
|| [[ "${extra_gems[(r)gemedit]}" -le ${#extra_gems} ]] ; then
|
|| [[ "${_gem_extensions[(r)gemedit]}" -le ${#_gem_extensions} ]] ; then
|
||||||
extra_gem_commands_desc=${gem_edit_command}
|
extra_gem_commands_desc=${gem_edit_command}
|
||||||
extra_gem_commands=edit
|
extra_gem_commands=edit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if (( CURRENT > 2 )); then
|
if (( CURRENT > 2 )); then
|
||||||
(( CURRENT-- ))
|
(( CURRENT-- ))
|
||||||
shift words
|
shift words
|
||||||
|
@ -493,6 +508,12 @@ _gem_which() {
|
||||||
$gem_general_flags && ret=0
|
$gem_general_flags && ret=0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_gem_extensions_caching_policy() {
|
||||||
|
local -a oldp
|
||||||
|
oldp=( "$1"(Nm+1) )
|
||||||
|
(( $#oldp ))
|
||||||
|
}
|
||||||
|
|
||||||
# Local Variables:
|
# Local Variables:
|
||||||
# mode: Shell-Script
|
# mode: Shell-Script
|
||||||
# sh-indentation: 2
|
# sh-indentation: 2
|
||||||
|
@ -501,3 +522,4 @@ _gem_which() {
|
||||||
# End:
|
# End:
|
||||||
# vim: ft=zsh sw=2 ts=2 et
|
# vim: ft=zsh sw=2 ts=2 et
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue