From 1cdc643e84154a729ee24f8ff85a429a14b888ed Mon Sep 17 00:00:00 2001 From: Wenxuan Zhang Date: Sun, 22 Dec 2019 11:38:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Improve=20diff=20preview?= =?UTF-8?q?=20on=20untracked=20files=20for=20`ga`.=20#66?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- forgit.plugin.zsh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/forgit.plugin.zsh b/forgit.plugin.zsh index 15e7ec7..74f3d22 100755 --- a/forgit.plugin.zsh +++ b/forgit.plugin.zsh @@ -59,16 +59,20 @@ forgit::add() { opts=" $FORGIT_FZF_DEFAULT_OPTS -0 -m --nth 2..,.. - --preview=\"git diff --color=always -- {-1} | $forgit_pager\" + --preview=\"if (git status --porcelain -- {-1} | grep '^??') &>/dev/null; then # diff with /dev/null for untracked files + git diff --color=always --no-index -- /dev/null {-1} | $forgit_pager | sed '2 s/added: /untracked: /' + else + git diff --color=always -- {-1} | $forgit_pager; + fi\" $FORGIT_ADD_FZF_OPTS " - files=$(git -c color.status=always -c status.relativePaths=true status --short | + files=$(git -c color.status=always -c status.relativePaths=true status --short --untracked-files | grep -F -e "$changed" -e "$unmerged" -e "$untracked" | sed -E 's/^(..[^[:space:]]*)[[:space:]]+(.*)$/[\1] \2/' | FZF_DEFAULT_OPTS="$opts" fzf | sed 's/^.*] //' | sed 's/.* -> //') # for rename case - [[ -n "$files" ]] && echo "$files"| tr '\n' '\0' |xargs -0 -I% git add % && git status --short && return + [[ -n "$files" ]] && echo "$files"| tr '\n' '\0' |xargs -0 -I% git add % && git status --short --untracked-files && return echo 'Nothing to add.' }