Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Oh My Zsh
Commits
a32564e0
Unverified
Commit
a32564e0
authored
Oct 24, 2020
by
Felipe Contreras
Committed by
GitHub
Oct 24, 2020
Browse files
gitfast: update to latest upstream and more (#9382)
parent
3b1699b5
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
plugins/gitfast/_git
View file @
a32564e0
...
@@ -2,25 +2,24 @@
...
@@ -2,25 +2,24 @@
# zsh completion wrapper for git
# zsh completion wrapper for git
#
#
# Copyright (c) 2012-20
13
Felipe Contreras <felipe.contreras@gmail.com>
# Copyright (c) 2012-20
20
Felipe Contreras <felipe.contreras@gmail.com>
#
#
#
You need git's bash completion script installed somewhere, by default it
#
The recommended way to install this script is to make a copy of it as a
#
would be the location bash-completion uses
.
#
file named '_git' inside any directory in your fpath
.
#
#
# If your script is somewhere else, you can configure it on your ~/.zshrc:
# For example, create a directory '~/.zsh/', copy this file to '~/.zsh/_git',
# and then add the following to your ~/.zshrc file:
#
#
#
zstyle ':completion:*:*:git:*' script ~/.git-completion.zsh
#
fpath=(~/.zsh $fpath)
#
#
# The recommended way to install this script is to copy to '~/.zsh/_git', and
# You need git's bash completion script installed. By default bash-completion's
# then add the following to your ~/.zshrc file:
# location will be used (e.g. pkg-config --variable=completionsdir bash-completion).
#
# If your bash completion script is somewhere else, you can specify the
# location in your ~/.zshrc:
#
# zstyle ':completion:*:*:git:*' script ~/.git-completion.bash
#
#
# fpath=(~/.zsh $fpath)
complete ()
{
# do nothing
return 0
}
zstyle -T ':completion:*:*:git:*' tag-order && \
zstyle -T ':completion:*:*:git:*' tag-order && \
zstyle ':completion:*:*:git:*' tag-order 'common-commands'
zstyle ':completion:*:*:git:*' tag-order 'common-commands'
...
@@ -30,16 +29,17 @@ if [ -z "$script" ]; then
...
@@ -30,16 +29,17 @@ if [ -z "$script" ]; then
local -a locations
local -a locations
local e
local e
locations=(
locations=(
"$(dirname ${funcsourcetrace[1]%:*})/git-completion.bash"
"$(dirname ${funcsourcetrace[1]%:*})"/git-completion.bash
'/etc/bash_completion.d/git' # fedora, old debian
"$HOME/.local/share/bash-completion/completions/git"
'/usr/share/bash-completion/completions/git' # arch, ubuntu, new debian
"$(pkg-config --variable=completionsdir bash-completion)"/git
'/usr/share/bash-completion/git' # gentoo
'/usr/share/bash-completion/completions/git'
'/etc/bash_completion.d/git' # old debian
)
)
for e in $locations; do
for e in $locations; do
test -f $e && script="$e" && break
test -f $e && script="$e" && break
done
done
fi
fi
ZSH_VERS
ION=
''
. "$script"
GIT_SOURCING_ZSH_COMPLET
ION=
y
. "$script"
__gitcomp ()
__gitcomp ()
{
{
...
@@ -50,13 +50,35 @@ __gitcomp ()
...
@@ -50,13 +50,35 @@ __gitcomp ()
case "$cur_" in
case "$cur_" in
--*=)
--*=)
;;
;;
--no-*)
local c IFS=$' \t\n'
local -a array
for c in ${=1}; do
if [[ $c == "--" ]]; then
continue
fi
c="$c${4-}"
case $c in
--*=|*.) ;;
*) c="$c " ;;
esac
array+=("$c")
done
compset -P '*[=:]'
compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
;;
*)
*)
local c IFS=$' \t\n'
local c IFS=$' \t\n'
local -a array
local -a array
for c in ${=1}; do
for c in ${=1}; do
if [[ $c == "--" ]]; then
c="--no-...${4-}"
array+=("$c ")
break
fi
c="$c${4-}"
c="$c${4-}"
case $c in
case $c in
--*=
*
|*.) ;;
--*=|*.) ;;
*) c="$c " ;;
*) c="$c " ;;
esac
esac
array+=("$c")
array+=("$c")
...
@@ -71,35 +93,57 @@ __gitcomp_direct ()
...
@@ -71,35 +93,57 @@ __gitcomp_direct ()
{
{
emulate -L zsh
emulate -L zsh
local IFS=$'\n'
compset -P '*[=:]'
compset -P '*[=:]'
compadd -Q -- ${
=
1} && _ret=0
compadd -Q
-S ''
-- ${
(f)
1} && _ret=0
}
}
__gitcomp_nl ()
__gitcomp_nl ()
{
{
emulate -L zsh
emulate -L zsh
local IFS=$'\n'
compset -P '*[=:]'
compset -P '*[=:]'
compadd -Q -S "${4- }" -p "${2-}" -- ${
=
1} && _ret=0
compadd -Q -S "${4- }" -p "${2-}" -- ${
(f)
1} && _ret=0
}
}
__gitcomp_nl_append ()
__gitcomp_nl_append ()
{
{
emulate -L zsh
emulate -L zsh
local IFS=$'\n'
compset -P '*[=:]'
compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0
compadd -Q -S "${4- }" -p "${2-}" -- ${(f)1} && _ret=0
}
__gitcomp_file_direct ()
{
emulate -L zsh
compadd -f -- ${(f)1} && _ret=0
}
}
__gitcomp_file ()
__gitcomp_file ()
{
{
emulate -L zsh
emulate -L zsh
local IFS=$'\n'
compadd -f -p "${2-}" -- ${(f)1} && _ret=0
compset -P '*[=:]'
}
compadd -Q -p "${2-}" -f -- ${=1} && _ret=0
_git_zsh ()
{
__gitcomp "v1.0"
}
__git_complete_command ()
{
emulate -L zsh
local command="$1"
local completion_func="_git_${command//-/_}"
if (( $+functions[$completion_func] )); then
emulate ksh -c $completion_func
return 0
else
return 1
fi
}
}
__git_zsh_bash_func ()
__git_zsh_bash_func ()
...
@@ -108,14 +152,12 @@ __git_zsh_bash_func ()
...
@@ -108,14 +152,12 @@ __git_zsh_bash_func ()
local command=$1
local command=$1
local completion_func="_git_${command//-/_}"
__git_complete_command "$command" && return
declare -f $completion_func >/dev/null && $completion_func && return
local expansion=$(__git_aliased_command "$command")
local expansion=$(__git_aliased_command "$command")
if [ -n "$expansion" ]; then
if [ -n "$expansion" ]; then
words[1]=$expansion
words[1]=$expansion
completion_func="_git_${expansion//-/_}"
__git_complete_command "$expansion"
declare -f $completion_func >/dev/null && $completion_func
fi
fi
}
}
...
@@ -140,9 +182,11 @@ __git_zsh_cmd_common ()
...
@@ -140,9 +182,11 @@ __git_zsh_cmd_common ()
push:'update remote refs along with associated objects'
push:'update remote refs along with associated objects'
rebase:'forward-port local commits to the updated upstream head'
rebase:'forward-port local commits to the updated upstream head'
reset:'reset current HEAD to the specified state'
reset:'reset current HEAD to the specified state'
restore:'restore working tree files'
rm:'remove files from the working tree and from the index'
rm:'remove files from the working tree and from the index'
show:'show various types of objects'
show:'show various types of objects'
status:'show the working tree status'
status:'show the working tree status'
switch:'switch branches'
tag:'create, list, delete or verify a tag object signed with GPG')
tag:'create, list, delete or verify a tag object signed with GPG')
_describe -t common-commands 'common commands' list && _ret=0
_describe -t common-commands 'common commands' list && _ret=0
}
}
...
@@ -150,8 +194,9 @@ __git_zsh_cmd_common ()
...
@@ -150,8 +194,9 @@ __git_zsh_cmd_common ()
__git_zsh_cmd_alias ()
__git_zsh_cmd_alias ()
{
{
local -a list
local -a list
list=(${${${(0)"$(git config -z --get-regexp '^alias\.')"}#alias.}%$'\n'*})
list=(${${(0)"$(git config -z --get-regexp '^alias\.*')"}#alias.})
_describe -t alias-commands 'aliases' list $* && _ret=0
list=(${(f)"$(printf "%s:alias for '%s'\n" ${(f@)list})"})
_describe -t alias-commands 'aliases' list && _ret=0
}
}
__git_zsh_cmd_all ()
__git_zsh_cmd_all ()
...
@@ -189,10 +234,13 @@ __git_zsh_main ()
...
@@ -189,10 +234,13 @@ __git_zsh_main ()
case $state in
case $state in
(command)
(command)
_alternative \
_tags common-commands alias-commands all-commands
'alias-commands:alias:__git_zsh_cmd_alias' \
while _tags; do
'common-commands:common:__git_zsh_cmd_common' \
_requested common-commands && __git_zsh_cmd_common
'all-commands:all:__git_zsh_cmd_all' && _ret=0
_requested alias-commands && __git_zsh_cmd_alias
_requested all-commands && __git_zsh_cmd_all
let _ret || break
done
;;
;;
(arg)
(arg)
local command="${words[1]}" __git_dir
local command="${words[1]}" __git_dir
...
...
plugins/gitfast/git-completion.bash
View file @
a32564e0
This diff is collapsed.
Click to expand it.
plugins/gitfast/git-prompt.sh
View file @
a32564e0
...
@@ -70,6 +70,15 @@
...
@@ -70,6 +70,15 @@
# state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
# state symbols by setting GIT_PS1_STATESEPARATOR. The default separator
# is SP.
# is SP.
#
#
# When there is an in-progress operation such as a merge, rebase,
# revert, cherry-pick, or bisect, the prompt will include information
# related to the operation, often in the form "|<OPERATION-NAME>".
#
# When the repository has a sparse-checkout, a notification of the form
# "|SPARSE" will be included in the prompt. This can be shortened to a
# single '?' character by setting GIT_PS1_COMPRESSSPARSESTATE, or omitted
# by setting GIT_PS1_OMITSPARSESTATE.
#
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
# find one, or @{upstream} otherwise. Once you have set
# find one, or @{upstream} otherwise. Once you have set
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
...
@@ -88,7 +97,8 @@
...
@@ -88,7 +97,8 @@
# If you would like a colored hint about the current dirty state, set
# If you would like a colored hint about the current dirty state, set
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
# the colored output of "git status -sb" and are available only when
# the colored output of "git status -sb" and are available only when
# using __git_ps1 for PROMPT_COMMAND or precmd.
# using __git_ps1 for PROMPT_COMMAND or precmd in Bash,
# but always available in Zsh.
#
#
# If you would like __git_ps1 to do nothing in the case when the current
# If you would like __git_ps1 to do nothing in the case when the current
# directory is set up to be ignored by git, then set
# directory is set up to be ignored by git, then set
...
@@ -286,6 +296,37 @@ __git_eread ()
...
@@ -286,6 +296,37 @@ __git_eread ()
test
-r
"
$1
"
&&
IFS
=
$'
\r\n
'
read
"
$2
"
<
"
$1
"
test
-r
"
$1
"
&&
IFS
=
$'
\r\n
'
read
"
$2
"
<
"
$1
"
}
}
# see if a cherry-pick or revert is in progress, if the user has committed a
# conflict resolution with 'git commit' in the middle of a sequence of picks or
# reverts then CHERRY_PICK_HEAD/REVERT_HEAD will not exist so we have to read
# the todo file.
__git_sequencer_status
()
{
local
todo
if
test
-f
"
$g
/CHERRY_PICK_HEAD"
then
r
=
"|CHERRY-PICKING"
return
0
;
elif
test
-f
"
$g
/REVERT_HEAD"
then
r
=
"|REVERTING"
return
0
;
elif
__git_eread
"
$g
/sequencer/todo"
todo
then
case
"
$todo
"
in
p[
\ \
]
|
pick[
\ \
]
*
)
r
=
"|CHERRY-PICKING"
return
0
;;
revert[
\ \
]
*
)
r
=
"|REVERTING"
return
0
;;
esac
fi
return
1
}
# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
# when called from PS1 using command substitution
# when called from PS1 using command substitution
# in this mode it prints text to add to bash PS1 prompt (includes branch name)
# in this mode it prints text to add to bash PS1 prompt (includes branch name)
...
@@ -390,6 +431,13 @@ __git_ps1 ()
...
@@ -390,6 +431,13 @@ __git_ps1 ()
return
$exit
return
$exit
fi
fi
local
sparse
=
""
if
[
-z
"
${
GIT_PS1_COMPRESSSPARSESTATE
}
"
]
&&
[
-z
"
${
GIT_PS1_OMITSPARSESTATE
}
"
]
&&
[
"
$(
git config
--bool
core.sparseCheckout
)
"
=
"true"
]
;
then
sparse
=
"|SPARSE"
fi
local
r
=
""
local
r
=
""
local
b
=
""
local
b
=
""
local
step
=
""
local
step
=
""
...
@@ -398,11 +446,7 @@ __git_ps1 ()
...
@@ -398,11 +446,7 @@ __git_ps1 ()
__git_eread
"
$g
/rebase-merge/head-name"
b
__git_eread
"
$g
/rebase-merge/head-name"
b
__git_eread
"
$g
/rebase-merge/msgnum"
step
__git_eread
"
$g
/rebase-merge/msgnum"
step
__git_eread
"
$g
/rebase-merge/end"
total
__git_eread
"
$g
/rebase-merge/end"
total
if
[
-f
"
$g
/rebase-merge/interactive"
]
;
then
r
=
"|REBASE"
r
=
"|REBASE-i"
else
r
=
"|REBASE-m"
fi
else
else
if
[
-d
"
$g
/rebase-apply"
]
;
then
if
[
-d
"
$g
/rebase-apply"
]
;
then
__git_eread
"
$g
/rebase-apply/next"
step
__git_eread
"
$g
/rebase-apply/next"
step
...
@@ -417,10 +461,8 @@ __git_ps1 ()
...
@@ -417,10 +461,8 @@ __git_ps1 ()
fi
fi
elif
[
-f
"
$g
/MERGE_HEAD"
]
;
then
elif
[
-f
"
$g
/MERGE_HEAD"
]
;
then
r
=
"|MERGING"
r
=
"|MERGING"
elif
[
-f
"
$g
/CHERRY_PICK_HEAD"
]
;
then
elif
__git_sequencer_status
;
then
r
=
"|CHERRY-PICKING"
:
elif
[
-f
"
$g
/REVERT_HEAD"
]
;
then
r
=
"|REVERTING"
elif
[
-f
"
$g
/BISECT_LOG"
]
;
then
elif
[
-f
"
$g
/BISECT_LOG"
]
;
then
r
=
"|BISECTING"
r
=
"|BISECTING"
fi
fi
...
@@ -467,6 +509,7 @@ __git_ps1 ()
...
@@ -467,6 +509,7 @@ __git_ps1 ()
local
i
=
""
local
i
=
""
local
s
=
""
local
s
=
""
local
u
=
""
local
u
=
""
local
h
=
""
local
c
=
""
local
c
=
""
local
p
=
""
local
p
=
""
...
@@ -499,6 +542,11 @@ __git_ps1 ()
...
@@ -499,6 +542,11 @@ __git_ps1 ()
u
=
"%
${
ZSH_VERSION
+%
}
"
u
=
"%
${
ZSH_VERSION
+%
}
"
fi
fi
if
[
-n
"
${
GIT_PS1_COMPRESSSPARSESTATE
}
"
]
&&
[
"
$(
git config
--bool
core.sparseCheckout
)
"
=
"true"
]
;
then
h
=
"?"
fi
if
[
-n
"
${
GIT_PS1_SHOWUPSTREAM
-
}
"
]
;
then
if
[
-n
"
${
GIT_PS1_SHOWUPSTREAM
-
}
"
]
;
then
__git_ps1_show_upstream
__git_ps1_show_upstream
fi
fi
...
@@ -519,8 +567,8 @@ __git_ps1 ()
...
@@ -519,8 +567,8 @@ __git_ps1 ()
b
=
"
\$
{__git_ps1_branch_name}"
b
=
"
\$
{__git_ps1_branch_name}"
fi
fi
local
f
=
"
$w$i$s$u
"
local
f
=
"
$
h$
w$i$s$u
"
local
gitstring
=
"
$c$b
${
f
:+
$z$f
}
$r$p
"
local
gitstring
=
"
$c$b
${
f
:+
$z$f
}$
{
sparse
}
$
r$p
"
if
[
$pcmode
=
yes
]
;
then
if
[
$pcmode
=
yes
]
;
then
if
[
"
${
__git_printf_supports_v
-
}
"
!=
yes
]
;
then
if
[
"
${
__git_printf_supports_v
-
}
"
!=
yes
]
;
then
...
...
plugins/gitfast/update
View file @
a32564e0
#!/bin/sh
#!/bin/sh
url
=
"https://
git.kernel.org/pub/scm/git/git.git/plain/contrib/
completion"
url
=
"https://
raw.githubusercontent.com/felipec/git-
completion"
version
=
"
2.16
.0"
version
=
"
1
.0"
curl
-s
-o
_git
"
${
url
}
/git-completion.zsh?h=v
${
version
}
"
&&
curl
-s
-o
_git
"
${
url
}
/v
${
version
}
/git-completion.zsh"
&&
curl
-s
-o
git-completion.bash
"
${
url
}
/git-completion.bash?h=v
${
version
}
"
&&
curl
-s
-o
git-completion.bash
"
${
url
}
/v
${
version
}
/git-completion.bash"
&&
curl
-s
-o
git-prompt.sh
"
${
url
}
/git-prompt.sh?h=v
${
version
}
"
&&
curl
-s
-o
git-prompt.sh
"
${
url
}
/v
${
version
}
/git-prompt.sh"
git apply updates.patch
plugins/gitfast/updates.patch
deleted
100644 → 0
View file @
3b1699b5
diff --git b/plugins/gitfast/_git a/plugins/gitfast/_git
index e2554130..a2e3bef5 100644
--- b/plugins/gitfast/_git
+++ a/plugins/gitfast/_git
@@ -30,7 +30,7 @@
if [ -z "$script" ]; then
local -a locations
local e
locations=(
- $(dirname ${funcsourcetrace[1]%:*})/git-completion.bash
+ "$(dirname ${funcsourcetrace[1]%:*})/git-completion.bash"
'/etc/bash_completion.d/git' # fedora, old debian
'/usr/share/bash-completion/completions/git' # arch, ubuntu, new debian
'/usr/share/bash-completion/git' # gentoo
@@ -214,8 +214,10 @@
_git ()
if (( $+functions[__${service}_zsh_main] )); then
__${service}_zsh_main
- else
+ elif (( $+functions[__${service}_main] )); then
emulate ksh -c __${service}_main
+ elif (( $+functions[_${service}] )); then
+ emulate ksh -c _${service}
fi
let _ret && _default && _ret=0
diff --git b/plugins/gitfast/git-completion.bash a/plugins/gitfast/git-completion.bash
index 9c8f7380..14012cab 100644
--- b/plugins/gitfast/git-completion.bash
+++ a/plugins/gitfast/git-completion.bash
@@ -2915,6 +2915,6 @@
__git_complete gitk __gitk_main
# when the user has tab-completed the executable name and consequently
# included the '.exe' suffix.
#
-if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
+if [[ "$OSTYPE" = cygwin* ]]; then
__git_complete git.exe __git_main
fi
diff --git b/plugins/gitfast/git-prompt.sh a/plugins/gitfast/git-prompt.sh
index 97eacd78..c1de34eb 100644
--- b/plugins/gitfast/git-prompt.sh
+++ a/plugins/gitfast/git-prompt.sh
@@ -502,9 +502,11 @@
__git_ps1 ()
local z="${GIT_PS1_STATESEPARATOR-" "}"
- # NO color option unless in PROMPT_COMMAND mode
- if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
- __git_ps1_colorize_gitstring
+ # NO color option unless in PROMPT_COMMAND mode or it's Zsh
+ if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
+ if [ $pcmode = yes ] || [ -n "${ZSH_VERSION-}" ]; then
+ __git_ps1_colorize_gitstring
+ fi
fi
b=${b##refs/heads/}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment