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