mirror of
				https://github.com/dcarrillo/prezto.git
				synced 2025-11-04 07:29:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
#compdef git-hub-browse
 | 
						|
#autoload
 | 
						|
 | 
						|
#
 | 
						|
# Completes git-hub-browse.
 | 
						|
#
 | 
						|
# Authors:
 | 
						|
#   Sorin Ionescu <sorin.ionescu@gmail.com>
 | 
						|
#
 | 
						|
 | 
						|
if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then
 | 
						|
  return 1
 | 
						|
fi
 | 
						|
 | 
						|
local state expl remotes remote branches_or_tags branches tags files ret=1
 | 
						|
 | 
						|
_arguments -C -s -S \
 | 
						|
  '1::args:->remote' \
 | 
						|
  '2::args:->branch-or-tag' \
 | 
						|
  '3::args:->file' && ret=0
 | 
						|
 | 
						|
case "$state" in
 | 
						|
  (remote)
 | 
						|
    remotes=($(git config --get-regexp 'remote.*.url' | cut -d. -f2))
 | 
						|
 | 
						|
    _describe -t branch 'remotes' remotes && ret=0
 | 
						|
  ;;
 | 
						|
  (branch-or-tag)
 | 
						|
    remote="$words[(($CURRENT - 1))]"
 | 
						|
 | 
						|
    branches_or_tags=($(
 | 
						|
      git ls-remote --heads --tags "$remote" 2> /dev/null | cut -f2
 | 
						|
    ))
 | 
						|
 | 
						|
    branches=(HEAD ${${(M)branches_or_tags[@]##refs/heads/?##}##refs/heads/})
 | 
						|
    tags=(${${(M)branches_or_tags[@]##refs/tags/?##}##refs/tags/})
 | 
						|
 | 
						|
    _describe -t branch 'branches' branches && ret=0
 | 
						|
    _describe -t tag 'tags' tags && ret=0
 | 
						|
  ;;
 | 
						|
  (file)
 | 
						|
    files=(${(0)"$(_call_program files git ls-files -z --exclude-standard 2> /dev/null)"})
 | 
						|
    _wanted file expl 'file' _multi_parts - / files && ret=0
 | 
						|
  ;;
 | 
						|
esac
 | 
						|
 | 
						|
return $ret
 |