Skip to content

Commit

Permalink
gi: add diff command, improve previews
Browse files Browse the repository at this point in the history
  • Loading branch information
XPhyro committed Mar 1, 2024
1 parent 68e181d commit 704c9a2
Showing 1 changed file with 29 additions and 3 deletions.
32 changes: 29 additions & 3 deletions src/sh/util/integration/git/gi
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,18 @@ fzf() {

git_show() {
git log --color=always --pretty="%h %cs %s" \
| fzf --multi --preview="printf '%s\n' {} | awk '{print \$2}' | xargs -r -d '\n' -n 1 git show --color=always"
| fzf --preview="printf '%s\n' {} | awk '{print \$2}' | xargs -r -d '\n' -n 1 git show --color=always" > /dev/null
}

git_diff() {
{
printf "%s\n" "*"
git diff --name-only --staged
git diff --name-only
} | fzf --preview="
printf '%s\n' {} | awk '{print \$2}' | xargs -r -d '\n' -n 1 git diff --staged --color=always --
printf '%s\n' {} | awk '{print \$2}' | xargs -r -d '\n' -n 1 git diff --color=always --
" > /dev/null
}

# TODO: most functions have the same template, clean them up.
Expand All @@ -45,7 +56,14 @@ git_add() {

selection="$(
printf "%s\n" "*" "$files" \
| fzf --multi --preview="$PREVIEW" --bind=one:accept
| fzf --multi --preview='
diff="$(printf "%s\n" {} | awk "{print \$2}" | xargs -r -d "\n" -n 1 git diff --color=always --)"
if [ -n "$diff" ]; then
printf "%s\n" "$diff"
else
printf "%s\n" {} | awk "{print \$2}" | xargs -r -d "\n" -n 1 bat --color=always --style=header,grid --line-range :500 --
fi
' --bind=one:accept
)"

[ -z "$selection" ] && return
Expand All @@ -60,7 +78,9 @@ git_partial_add() {

selection="$(
printf "%s\n" "$files" \
| fzf --multi --preview="$PREVIEW" --bind=one:accept
| fzf --multi --preview="
printf '%s\n' {} | awk '{print \$2}' | xargs -r -d '\n' -n 1 git diff --color=always --
" --bind=one:accept
)"

[ -z "$selection" ] && return
Expand Down Expand Up @@ -140,6 +160,11 @@ git_pull() {
while :; do
available_commands="$(
printf "%s\n" "Show"
[ -n "$(
git diff --name-only --staged
git diff --name-only
)" ] \
&& printf "%s\n" "Diff"
[ -n "$(
git ls-files --others --exclude-standard
git diff --name-only
Expand All @@ -162,6 +187,7 @@ while :; do

case "$command" in
"Show") git_show;;
"Diff") git_diff;;
"Add") git_add;;
"Partial Add") git_partial_add;;
"Unstage") git_unstage;;
Expand Down

0 comments on commit 704c9a2

Please sign in to comment.