🔧 chore(fish): plugin updates
This commit is contained in:
parent
673373045b
commit
fe88d487f9
3 changed files with 485 additions and 513 deletions
|
@ -4,3 +4,4 @@ abbr -a t --function projectdo_test
|
||||||
abbr -a p --function projectdo_tool
|
abbr -a p --function projectdo_tool
|
||||||
abbr -a y yadm
|
abbr -a y yadm
|
||||||
abbr -a pse pacseek
|
abbr -a pse pacseek
|
||||||
|
abbr -a g git
|
||||||
|
|
|
@ -42,7 +42,7 @@ _forgit_warn() { printf "%b[Warn]%b %s\n" '\e[0;33m' '\e[0m' "$@" >&2; }
|
||||||
_forgit_info() { printf "%b[Info]%b %s\n" '\e[0;32m' '\e[0m' "$@" >&2; }
|
_forgit_info() { printf "%b[Info]%b %s\n" '\e[0;32m' '\e[0m' "$@" >&2; }
|
||||||
_forgit_inside_work_tree() { git rev-parse --is-inside-work-tree >/dev/null; }
|
_forgit_inside_work_tree() { git rev-parse --is-inside-work-tree >/dev/null; }
|
||||||
# tac is not available on OSX, tail -r is not available on Linux, so we use either of them
|
# tac is not available on OSX, tail -r is not available on Linux, so we use either of them
|
||||||
_forgit_reverse_lines() { tac 2>/dev/null || tail -r; }
|
_forgit_reverse_lines() { tac 2> /dev/null || tail -r; }
|
||||||
|
|
||||||
_forgit_previous_commit() {
|
_forgit_previous_commit() {
|
||||||
# "SHA~" is invalid when the commit is the first commit, but we can use "--root" instead
|
# "SHA~" is invalid when the commit is the first commit, but we can use "--root" instead
|
||||||
|
@ -88,17 +88,17 @@ _forgit_is_file_tracked="(git ls-files {} --error-unmatch) &> /dev/null"
|
||||||
_forgit_log() {
|
_forgit_log() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local opts graph files log_format preview_cmd enter_cmd
|
local opts graph files log_format preview_cmd enter_cmd
|
||||||
files=$(sed -nE 's/.*-- (.*)/\1/p' <<<"$*") # extract files parameters for `git show` command
|
files=$(sed -nE 's/.*-- (.*)/\1/p' <<< "$*") # extract files parameters for `git show` command
|
||||||
preview_cmd="echo {} | $_forgit_extract_sha | xargs -I% git show --color=always -U$_forgit_preview_context % -- $files | $_forgit_show_pager"
|
preview_cmd="echo {} | $_forgit_extract_sha | xargs -I% git show --color=always -U$_forgit_preview_context % -- $files | $_forgit_show_pager"
|
||||||
enter_cmd="echo {} | $_forgit_extract_sha | xargs -I% ${FORGIT} diff %^! $files"
|
enter_cmd="echo {} | $_forgit_extract_sha | xargs -I% ${FORGIT} diff %^! $files"
|
||||||
opts="
|
opts="
|
||||||
$FORGIT_FZF_DEFAULT_OPTS
|
$FORGIT_FZF_DEFAULT_OPTS
|
||||||
+s +m --tiebreak=index
|
+s +m --tiebreak=index
|
||||||
--bind=\"enter:execute($enter_cmd)\"
|
--bind=\"enter:execute($enter_cmd)\"
|
||||||
--bind=\"ctrl-y:execute-silent(echo {} | $_forgit_extract_sha | ${FORGIT_COPY_CMD:-pbcopy})\"
|
--bind=\"ctrl-y:execute-silent(echo {} | $_forgit_extract_sha | ${FORGIT_COPY_CMD:-pbcopy})\"
|
||||||
--preview=\"$preview_cmd\"
|
--preview=\"$preview_cmd\"
|
||||||
$FORGIT_LOG_FZF_OPTS
|
$FORGIT_LOG_FZF_OPTS
|
||||||
"
|
"
|
||||||
graph=--graph
|
graph=--graph
|
||||||
[[ $FORGIT_LOG_GRAPH_ENABLE == false ]] && graph=
|
[[ $FORGIT_LOG_GRAPH_ENABLE == false ]] && graph=
|
||||||
log_format=${FORGIT_GLO_FORMAT:-$_forgit_log_format}
|
log_format=${FORGIT_GLO_FORMAT:-$_forgit_log_format}
|
||||||
|
@ -115,7 +115,7 @@ _forgit_diff() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local files opts commits repo get_files preview_cmd enter_cmd
|
local files opts commits repo get_files preview_cmd enter_cmd
|
||||||
[[ $# -ne 0 ]] && {
|
[[ $# -ne 0 ]] && {
|
||||||
if git rev-parse "$1" -- &>/dev/null; then
|
if git rev-parse "$1" -- &>/dev/null ; then
|
||||||
if [[ $# -gt 1 ]] && git rev-parse "$2" -- &>/dev/null; then
|
if [[ $# -gt 1 ]] && git rev-parse "$2" -- &>/dev/null; then
|
||||||
commits="$1 $2" && files=("${@:3}")
|
commits="$1 $2" && files=("${@:3}")
|
||||||
else
|
else
|
||||||
|
@ -138,6 +138,9 @@ _forgit_diff() {
|
||||||
# We have to do a two-step sed -> tr pipe because OSX's sed implementation does
|
# We have to do a two-step sed -> tr pipe because OSX's sed implementation does
|
||||||
# not support the null-character directly.
|
# not support the null-character directly.
|
||||||
get_files="echo {} | sed 's/.*] *//' | sed 's/ -> /\\\n/' | tr '\\\n' '\\\0'"
|
get_files="echo {} | sed 's/.*] *//' | sed 's/ -> /\\\n/' | tr '\\\n' '\\\0'"
|
||||||
|
# Similar to the line above, but only gets a single file from a single line
|
||||||
|
# Gets the new name of renamed files
|
||||||
|
get_file="echo {} | sed 's/.*] *//' | sed 's/.*-> //'"
|
||||||
# Git stashes are named "stash@{x}", which contains the fzf placeholder "{x}".
|
# Git stashes are named "stash@{x}", which contains the fzf placeholder "{x}".
|
||||||
# In order to support passing stashes as arguments to _forgit_diff, we have to
|
# In order to support passing stashes as arguments to _forgit_diff, we have to
|
||||||
# prevent fzf from interpreting this substring by escaping the opening bracket.
|
# prevent fzf from interpreting this substring by escaping the opening bracket.
|
||||||
|
@ -146,14 +149,14 @@ _forgit_diff() {
|
||||||
git_diff="git diff --color=always $FORGIT_DIFF_GIT_OPTS $escaped_commits"
|
git_diff="git diff --color=always $FORGIT_DIFF_GIT_OPTS $escaped_commits"
|
||||||
preview_cmd="cd '$repo' && $get_files | xargs -0 $git_diff -U$_forgit_preview_context -- | $_forgit_diff_pager"
|
preview_cmd="cd '$repo' && $get_files | xargs -0 $git_diff -U$_forgit_preview_context -- | $_forgit_diff_pager"
|
||||||
enter_cmd="cd '$repo' && $get_files | xargs -0 $git_diff -U$_forgit_fullscreen_context -- | $_forgit_diff_pager"
|
enter_cmd="cd '$repo' && $get_files | xargs -0 $git_diff -U$_forgit_fullscreen_context -- | $_forgit_diff_pager"
|
||||||
opts="
|
opts="
|
||||||
$FORGIT_FZF_DEFAULT_OPTS
|
$FORGIT_FZF_DEFAULT_OPTS
|
||||||
+m -0 --bind=\"enter:execute($enter_cmd | $_forgit_enter_pager)\"
|
+m -0 --bind=\"enter:execute($enter_cmd | $_forgit_enter_pager)\"
|
||||||
--preview=\"$preview_cmd\"
|
--preview=\"$preview_cmd\"
|
||||||
--bind=\"alt-e:execute-silent($EDITOR \$\($get_files\) >/dev/tty </dev/tty)+refresh-preview\"
|
--bind=\"alt-e:execute-silent($EDITOR \\\"\$\($get_file)\\\" >/dev/tty </dev/tty)+refresh-preview\"
|
||||||
$FORGIT_DIFF_FZF_OPTS
|
$FORGIT_DIFF_FZF_OPTS
|
||||||
--prompt=\"$commits > \"
|
--prompt=\"$commits > \"
|
||||||
"
|
"
|
||||||
eval "git diff --name-status $FORGIT_DIFF_GIT_OPTS $commits -- ${files[*]} | sed -E 's/^([[:alnum:]]+)[[:space:]]+(.*)$/[\1] \2/'" |
|
eval "git diff --name-status $FORGIT_DIFF_GIT_OPTS $commits -- ${files[*]} | sed -E 's/^([[:alnum:]]+)[[:space:]]+(.*)$/[\1] \2/'" |
|
||||||
sed 's/ / -> /2' | expand -t 8 |
|
sed 's/ / -> /2' | expand -t 8 |
|
||||||
FZF_DEFAULT_OPTS="$opts" fzf
|
FZF_DEFAULT_OPTS="$opts" fzf
|
||||||
|
@ -169,32 +172,29 @@ _forgit_add() {
|
||||||
local git_add changed unmerged untracked files opts preview extract
|
local git_add changed unmerged untracked files opts preview extract
|
||||||
git_add="git add $FORGIT_ADD_GIT_OPTS"
|
git_add="git add $FORGIT_ADD_GIT_OPTS"
|
||||||
# Add files if passed as arguments
|
# Add files if passed as arguments
|
||||||
[[ $# -ne 0 ]] && {
|
[[ $# -ne 0 ]] && { $git_add "$@" && git status -su; return $?; }
|
||||||
$git_add "$@" && git status -su
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
|
|
||||||
changed=$(git config --get-color color.status.changed red)
|
changed=$(git config --get-color color.status.changed red)
|
||||||
unmerged=$(git config --get-color color.status.unmerged red)
|
unmerged=$(git config --get-color color.status.unmerged red)
|
||||||
untracked=$(git config --get-color color.status.untracked red)
|
untracked=$(git config --get-color color.status.untracked red)
|
||||||
# NOTE: paths listed by 'git status -su' mixed with quoted and unquoted style
|
# NOTE: paths listed by 'git status -su' mixed with quoted and unquoted style
|
||||||
# remove indicators | remove original path for rename case | remove surrounding quotes
|
# remove indicators | remove original path for rename case | remove surrounding quotes
|
||||||
extract="
|
extract="
|
||||||
sed 's/^.*] //' |
|
sed 's/^.*] //' |
|
||||||
sed 's/.* -> //' |
|
sed 's/.* -> //' |
|
||||||
sed -e 's/^\\\"//' -e 's/\\\"\$//'"
|
sed -e 's/^\\\"//' -e 's/\\\"\$//'"
|
||||||
preview="
|
preview="
|
||||||
file=\$(echo {} | $extract)
|
file=\$(echo {} | $extract)
|
||||||
if (git status -s -- \\\"\$file\\\" | grep '^??') &>/dev/null; then # diff with /dev/null for untracked files
|
if (git status -s -- \\\"\$file\\\" | grep '^??') &>/dev/null; then # diff with /dev/null for untracked files
|
||||||
git diff --color=always --no-index -- /dev/null \\\"\$file\\\" | $_forgit_diff_pager | sed '2 s/added:/untracked:/'
|
git diff --color=always --no-index -- /dev/null \\\"\$file\\\" | $_forgit_diff_pager | sed '2 s/added:/untracked:/'
|
||||||
else
|
else
|
||||||
git diff --color=always -- \\\"\$file\\\" | $_forgit_diff_pager
|
git diff --color=always -- \\\"\$file\\\" | $_forgit_diff_pager
|
||||||
fi"
|
fi"
|
||||||
opts="
|
opts="
|
||||||
$FORGIT_FZF_DEFAULT_OPTS
|
$FORGIT_FZF_DEFAULT_OPTS
|
||||||
-0 -m --nth 2..,..
|
-0 -m --nth 2..,..
|
||||||
--preview=\"$preview\"
|
--preview=\"$preview\"
|
||||||
--bind=\"alt-e:execute-silent($EDITOR \$\(echo {} | $extract\) >/dev/tty </dev/tty)+refresh-preview\"
|
--bind=\"alt-e:execute-silent($EDITOR \\\"\$\(echo {} | $extract\)\\\" >/dev/tty </dev/tty)+refresh-preview\"
|
||||||
$FORGIT_ADD_FZF_OPTS
|
$FORGIT_ADD_FZF_OPTS
|
||||||
"
|
"
|
||||||
files=$(git -c color.status=always -c status.relativePaths=true status -su |
|
files=$(git -c color.status=always -c status.relativePaths=true status -su |
|
||||||
|
@ -202,7 +202,7 @@ else
|
||||||
sed -E 's/^(..[^[:space:]]*)[[:space:]]+(.*)$/[\1] \2/' |
|
sed -E 's/^(..[^[:space:]]*)[[:space:]]+(.*)$/[\1] \2/' |
|
||||||
FZF_DEFAULT_OPTS="$opts" fzf |
|
FZF_DEFAULT_OPTS="$opts" fzf |
|
||||||
sh -c "$extract")
|
sh -c "$extract")
|
||||||
[[ -n "$files" ]] && echo "$files" | tr '\n' '\0' | $git_add --pathspec-file-nul --pathspec-from-file - && git status -su && return
|
[[ -n "$files" ]] && echo "$files"| tr '\n' '\0' | $git_add --pathspec-file-nul --pathspec-from-file - && git status -su && return
|
||||||
echo 'Nothing to add.'
|
echo 'Nothing to add.'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,10 +211,7 @@ _forgit_reset_head() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local git_reset_head cmd files opts rootdir
|
local git_reset_head cmd files opts rootdir
|
||||||
git_reset_head="git reset -q $FORGIT_RESET_HEAD_GIT_OPTS HEAD"
|
git_reset_head="git reset -q $FORGIT_RESET_HEAD_GIT_OPTS HEAD"
|
||||||
[[ $# -ne 0 ]] && {
|
[[ $# -ne 0 ]] && { $git_reset_head "$@" && git status --short; return $?; }
|
||||||
$git_reset_head "$@" && git status --short
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
rootdir=$(git rev-parse --show-toplevel)
|
rootdir=$(git rev-parse --show-toplevel)
|
||||||
cmd="git diff --staged --color=always -- $rootdir/{} | $_forgit_diff_pager "
|
cmd="git diff --staged --color=always -- $rootdir/{} | $_forgit_diff_pager "
|
||||||
opts="
|
opts="
|
||||||
|
@ -234,10 +231,7 @@ _forgit_stash_show() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local git_stash_show git_stash_list cmd opts
|
local git_stash_show git_stash_list cmd opts
|
||||||
git_stash_show="git stash show --color=always --ext-diff"
|
git_stash_show="git stash show --color=always --ext-diff"
|
||||||
[[ $# -ne 0 ]] && {
|
[[ $# -ne 0 ]] && { $git_stash_show "$@"; return $?; }
|
||||||
$git_stash_show "$@"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
git_stash_list="git stash list $FORGIT_STASH_SHOW_GIT_OPTS"
|
git_stash_list="git stash list $FORGIT_STASH_SHOW_GIT_OPTS"
|
||||||
cmd="echo {} |cut -d: -f1 |xargs -I% $git_stash_show % |$_forgit_diff_pager"
|
cmd="echo {} |cut -d: -f1 |xargs -I% $git_stash_show % |$_forgit_diff_pager"
|
||||||
opts="
|
opts="
|
||||||
|
@ -259,21 +253,18 @@ _forgit_stash_push() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local git_stash_push msg args
|
local git_stash_push msg args
|
||||||
git_stash_push="git stash push $FORGIT_STASH_PUSH_GIT_OPTS"
|
git_stash_push="git stash push $FORGIT_STASH_PUSH_GIT_OPTS"
|
||||||
args=("$@")
|
args=( "$@" )
|
||||||
while (("$#")); do
|
while (( "$#" )); do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
# allow message as argument
|
# allow message as argument
|
||||||
-m | --message)
|
-m|--message)
|
||||||
msg="$2"
|
msg="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
# ignore -u as it's used implicitly
|
# ignore -u as it's used implicitly
|
||||||
-u | --include-untracked) shift ;;
|
-u|--include-untracked) shift ;;
|
||||||
# pass to git directly when encountering anything else
|
# pass to git directly when encountering anything else
|
||||||
*)
|
*) $git_stash_push "${args[@]}"; return $?
|
||||||
$git_stash_push "${args[@]}"
|
|
||||||
return $?
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
local opts preview files
|
local opts preview files
|
||||||
|
@ -298,10 +289,7 @@ _forgit_stash_push() {
|
||||||
# git clean selector
|
# git clean selector
|
||||||
_forgit_clean() {
|
_forgit_clean() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
_forgit_contains_non_flags "$@" && {
|
_forgit_contains_non_flags "$@" && { git clean -q "$@"; return $?; }
|
||||||
git clean -q "$@"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
local git_clean files opts
|
local git_clean files opts
|
||||||
git_clean="git clean $FORGIT_CLEAN_GIT_OPTS"
|
git_clean="git clean $FORGIT_CLEAN_GIT_OPTS"
|
||||||
opts="
|
opts="
|
||||||
|
@ -310,7 +298,7 @@ _forgit_clean() {
|
||||||
$FORGIT_CLEAN_FZF_OPTS
|
$FORGIT_CLEAN_FZF_OPTS
|
||||||
"
|
"
|
||||||
# Note: Postfix '/' in directory path should be removed. Otherwise the directory itself will not be removed.
|
# Note: Postfix '/' in directory path should be removed. Otherwise the directory itself will not be removed.
|
||||||
files=$(git clean -xdffn "$@" | sed 's/^Would remove //' | FZF_DEFAULT_OPTS="$opts" fzf | sed 's#/$##')
|
files=$(git clean -xdffn "$@"| sed 's/^Would remove //' | FZF_DEFAULT_OPTS="$opts" fzf |sed 's#/$##')
|
||||||
# shellcheck disable=2086
|
# shellcheck disable=2086
|
||||||
[[ -n "$files" ]] && echo "$files" | tr '\n' '\0' | xargs -0 -I% $git_clean -xdff '%' && git status --short && return
|
[[ -n "$files" ]] && echo "$files" | tr '\n' '\0' | xargs -0 -I% $git_clean -xdff '%' && git status --short && return
|
||||||
echo 'Nothing to clean.'
|
echo 'Nothing to clean.'
|
||||||
|
@ -378,7 +366,8 @@ _forgit_cherry_pick_from_branch() {
|
||||||
"
|
"
|
||||||
# loop until either the branch selector is closed or a commit to be cherry
|
# loop until either the branch selector is closed or a commit to be cherry
|
||||||
# picked has been selected from within a branch
|
# picked has been selected from within a branch
|
||||||
while true; do
|
while true
|
||||||
|
do
|
||||||
if [[ -z $input_branch ]]; then
|
if [[ -z $input_branch ]]; then
|
||||||
branch="$(eval "$cmd" | FZF_DEFAULT_OPTS="$opts" fzf | awk '{print $1}')"
|
branch="$(eval "$cmd" | FZF_DEFAULT_OPTS="$opts" fzf | awk '{print $1}')"
|
||||||
else
|
else
|
||||||
|
@ -402,7 +391,7 @@ _forgit_rebase() {
|
||||||
graph=--graph
|
graph=--graph
|
||||||
[[ $FORGIT_LOG_GRAPH_ENABLE == false ]] && graph=
|
[[ $FORGIT_LOG_GRAPH_ENABLE == false ]] && graph=
|
||||||
cmd="git log $graph --color=always --format='$_forgit_log_format' $* $_forgit_emojify"
|
cmd="git log $graph --color=always --format='$_forgit_log_format' $* $_forgit_emojify"
|
||||||
files=$(sed -nE 's/.* -- (.*)/\1/p' <<<"$*") # extract files parameters for `git show` command
|
files=$(sed -nE 's/.* -- (.*)/\1/p' <<< "$*") # extract files parameters for `git show` command
|
||||||
preview="echo {} | $_forgit_extract_sha | xargs -I% git show --color=always % -- $files | $_forgit_show_pager"
|
preview="echo {} | $_forgit_extract_sha | xargs -I% git show --color=always % -- $files | $_forgit_show_pager"
|
||||||
opts="
|
opts="
|
||||||
$FORGIT_FZF_DEFAULT_OPTS
|
$FORGIT_FZF_DEFAULT_OPTS
|
||||||
|
@ -427,7 +416,7 @@ _forgit_fixup() {
|
||||||
graph=--graph
|
graph=--graph
|
||||||
[[ $FORGIT_LOG_GRAPH_ENABLE == false ]] && graph=
|
[[ $FORGIT_LOG_GRAPH_ENABLE == false ]] && graph=
|
||||||
cmd="git log $graph --color=always --format='$_forgit_log_format' $* $_forgit_emojify"
|
cmd="git log $graph --color=always --format='$_forgit_log_format' $* $_forgit_emojify"
|
||||||
files=$(sed -nE 's/.* -- (.*)/\1/p' <<<"$*")
|
files=$(sed -nE 's/.* -- (.*)/\1/p' <<< "$*")
|
||||||
preview="echo {} | $_forgit_extract_sha | xargs -I% git show --color=always % -- $files | $_forgit_show_pager"
|
preview="echo {} | $_forgit_extract_sha | xargs -I% git show --color=always % -- $files | $_forgit_show_pager"
|
||||||
opts="
|
opts="
|
||||||
$FORGIT_FZF_DEFAULT_OPTS
|
$FORGIT_FZF_DEFAULT_OPTS
|
||||||
|
@ -451,10 +440,7 @@ _forgit_checkout_file() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local git_checkout cmd files opts
|
local git_checkout cmd files opts
|
||||||
git_checkout="git checkout $FORGIT_CHECKOUT_FILE_GIT_OPTS"
|
git_checkout="git checkout $FORGIT_CHECKOUT_FILE_GIT_OPTS"
|
||||||
[[ $# -ne 0 ]] && {
|
[[ $# -ne 0 ]] && { $git_checkout -- "$@"; return $?; }
|
||||||
$git_checkout -- "$@"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
cmd="git diff --color=always -- {} | $_forgit_diff_pager"
|
cmd="git diff --color=always -- {} | $_forgit_diff_pager"
|
||||||
opts="
|
opts="
|
||||||
$FORGIT_FZF_DEFAULT_OPTS
|
$FORGIT_FZF_DEFAULT_OPTS
|
||||||
|
@ -462,7 +448,7 @@ _forgit_checkout_file() {
|
||||||
--preview=\"$cmd\"
|
--preview=\"$cmd\"
|
||||||
$FORGIT_CHECKOUT_FILE_FZF_OPTS
|
$FORGIT_CHECKOUT_FILE_FZF_OPTS
|
||||||
"
|
"
|
||||||
files="$(git ls-files --modified "$(git rev-parse --show-toplevel)" | FZF_DEFAULT_OPTS="$opts" fzf)"
|
files="$(git ls-files --modified "$(git rev-parse --show-toplevel)"| FZF_DEFAULT_OPTS="$opts" fzf)"
|
||||||
[[ -n "$files" ]] && echo "$files" | tr '\n' '\0' | $git_checkout --pathspec-file-nul --pathspec-from-file -
|
[[ -n "$files" ]] && echo "$files" | tr '\n' '\0' | $git_checkout --pathspec-file-nul --pathspec-from-file -
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -512,10 +498,7 @@ _forgit_checkout_tag() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local git_checkout cmd opts preview
|
local git_checkout cmd opts preview
|
||||||
git_checkout="git checkout $FORGIT_CHECKOUT_TAG_GIT_OPTS"
|
git_checkout="git checkout $FORGIT_CHECKOUT_TAG_GIT_OPTS"
|
||||||
[[ $# -ne 0 ]] && {
|
[[ $# -ne 0 ]] && { $git_checkout "$@"; return $?; }
|
||||||
$git_checkout "$@"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
cmd="git tag -l --sort=-v:refname"
|
cmd="git tag -l --sort=-v:refname"
|
||||||
preview="git log {1} $_forgit_log_preview_options"
|
preview="git log {1} $_forgit_log_preview_options"
|
||||||
opts="
|
opts="
|
||||||
|
@ -534,10 +517,7 @@ _forgit_checkout_commit() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local git_checkout cmd opts graph
|
local git_checkout cmd opts graph
|
||||||
git_checkout="git checkout $FORGIT_CHECKOUT_COMMIT_GIT_OPTS"
|
git_checkout="git checkout $FORGIT_CHECKOUT_COMMIT_GIT_OPTS"
|
||||||
[[ $# -ne 0 ]] && {
|
[[ $# -ne 0 ]] && { $git_checkout "$@"; return $?; }
|
||||||
$git_checkout "$@"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
cmd="echo {} | $_forgit_extract_sha |xargs -I% git show --color=always % | $_forgit_show_pager"
|
cmd="echo {} | $_forgit_extract_sha |xargs -I% git show --color=always % | $_forgit_show_pager"
|
||||||
opts="
|
opts="
|
||||||
$FORGIT_FZF_DEFAULT_OPTS
|
$FORGIT_FZF_DEFAULT_OPTS
|
||||||
|
@ -557,10 +537,7 @@ _forgit_branch_delete() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local git_branch preview opts cmd branches
|
local git_branch preview opts cmd branches
|
||||||
git_branch="git branch $FORGIT_BRANCH_DELETE_GIT_OPTS"
|
git_branch="git branch $FORGIT_BRANCH_DELETE_GIT_OPTS"
|
||||||
[[ $# -ne 0 ]] && {
|
[[ $# -ne 0 ]] && { $git_branch -D "$@"; return $?; }
|
||||||
$git_branch -D "$@"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
preview="git log {1} $_forgit_log_preview_options"
|
preview="git log {1} $_forgit_log_preview_options"
|
||||||
|
|
||||||
opts="
|
opts="
|
||||||
|
@ -581,10 +558,7 @@ _forgit_revert_commit() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local git_revert cmd opts files preview commits IFS
|
local git_revert cmd opts files preview commits IFS
|
||||||
git_revert="git revert $FORGIT_REVERT_COMMIT_GIT_OPTS"
|
git_revert="git revert $FORGIT_REVERT_COMMIT_GIT_OPTS"
|
||||||
[[ $# -ne 0 ]] && {
|
[[ $# -ne 0 ]] && { $git_revert "$@"; return $?; }
|
||||||
$git_revert "$@"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd="git log --graph --color=always --format='$_forgit_log_format' $* $_forgit_emojify"
|
cmd="git log --graph --color=always --format='$_forgit_log_format' $* $_forgit_emojify"
|
||||||
opts="
|
opts="
|
||||||
|
@ -599,7 +573,7 @@ _forgit_revert_commit() {
|
||||||
# The instances of "cut", "nl" and "sort" all serve this purpose
|
# The instances of "cut", "nl" and "sort" all serve this purpose
|
||||||
# Please see https://github.com/wfxr/forgit/issues/253 for more details
|
# Please see https://github.com/wfxr/forgit/issues/253 for more details
|
||||||
|
|
||||||
files=$(sed -nE 's/.* -- (.*)/\1/p' <<<"$*") # extract files parameters for `git show` command
|
files=$(sed -nE 's/.* -- (.*)/\1/p' <<< "$*") # extract files parameters for `git show` command
|
||||||
preview="echo {} | cut -f2- | $_forgit_extract_sha | xargs -I% git show --color=always % -- $files | $_forgit_show_pager"
|
preview="echo {} | cut -f2- | $_forgit_extract_sha | xargs -I% git show --color=always % -- $files | $_forgit_show_pager"
|
||||||
|
|
||||||
${IFS+"false"} && unset old_IFS || old_IFS="$IFS"
|
${IFS+"false"} && unset old_IFS || old_IFS="$IFS"
|
||||||
|
@ -623,10 +597,7 @@ _forgit_blame() {
|
||||||
_forgit_inside_work_tree || return 1
|
_forgit_inside_work_tree || return 1
|
||||||
local git_blame opts flags preview file
|
local git_blame opts flags preview file
|
||||||
git_blame="git blame $FORGIT_BLAME_GIT_OPTS"
|
git_blame="git blame $FORGIT_BLAME_GIT_OPTS"
|
||||||
_forgit_contains_non_flags "$@" && {
|
_forgit_contains_non_flags "$@" && { $git_blame "$@"; return $?; }
|
||||||
$git_blame "$@"
|
|
||||||
return $?
|
|
||||||
}
|
|
||||||
opts="
|
opts="
|
||||||
$FORGIT_FZF_DEFAULT_OPTS
|
$FORGIT_FZF_DEFAULT_OPTS
|
||||||
$FORGIT_BLAME_FZF_OPTS
|
$FORGIT_BLAME_FZF_OPTS
|
||||||
|
@ -690,7 +661,7 @@ _forgit_ignore_get() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
_forgit_ignore_list() {
|
_forgit_ignore_list() {
|
||||||
find "$FORGIT_GI_TEMPLATES" -print | sed -e 's#.gitignore$##' -e 's#.*/##' | sort -fu
|
find "$FORGIT_GI_TEMPLATES" -print |sed -e 's#.gitignore$##' -e 's#.*/##' | sort -fu
|
||||||
}
|
}
|
||||||
_forgit_ignore_clean() {
|
_forgit_ignore_clean() {
|
||||||
setopt localoptions rmstarsilent
|
setopt localoptions rmstarsilent
|
||||||
|
|
|
@ -3,7 +3,7 @@ if not status is-interactive && test "$CI" != true
|
||||||
exit
|
exit
|
||||||
end
|
end
|
||||||
|
|
||||||
# Because of scoping rules, to capture the shell variables ezactly as they are, we must read
|
# Because of scoping rules, to capture the shell variables exactly as they are, we must read
|
||||||
# them before even executing _fzf_search_variables. We use psub to store the
|
# them before even executing _fzf_search_variables. We use psub to store the
|
||||||
# variables' info in temporary files and pass in the filenames as arguments.
|
# variables' info in temporary files and pass in the filenames as arguments.
|
||||||
# This variable is global so that it can be referenced by fzf_configure_bindings and in tests
|
# This variable is global so that it can be referenced by fzf_configure_bindings and in tests
|
||||||
|
|
Loading…
Add table
Reference in a new issue