diff --git a/bin/git-forgit b/bin/git-forgit index 2db6d77..66f53c5 100755 --- a/bin/git-forgit +++ b/bin/git-forgit @@ -326,12 +326,12 @@ _forgit_add() { --bind=\"alt-e:execute-silent($FORGIT edit_add_file {})+refresh-preview\" $FORGIT_ADD_FZF_OPTS " - files=$(git -c color.status=always -c status.relativePaths=true status -su | + read -r -a files <<< "$(git -c color.status=always -c status.relativePaths=true status -su | grep -F -e "$changed" -e "$unmerged" -e "$untracked" | sed -E 's/^(..[^[:space:]]*)[[:space:]]+(.*)$/[\1] \2/' | FZF_DEFAULT_OPTS="$opts" fzf | - _forgit_get_single_file_from_add_line) - [[ -n "$files" ]] && echo "$files"| tr '\n' '\0' | _forgit_git_add --pathspec-file-nul --pathspec-from-file - && git status -su && return + _forgit_get_single_file_from_add_line)" + [[ "${#files[@]}" -gt 0 ]] && _forgit_git_add "${files[@]}" && git status -su && return echo 'Nothing to add.' } @@ -442,9 +442,9 @@ _forgit_stash_push() { $FORGIT_STASH_PUSH_FZF_OPTS " # Show both modified and untracked files - files=$(git ls-files --exclude-standard --modified --others | FZF_DEFAULT_OPTS="$opts" fzf --preview="$FORGIT stash_push_preview {}") - [[ -z "$files" ]] && return 1 - echo "${files[@]}" | tr '\n' '\0' | _forgit_git_stash_push ${msg:+-m "$msg"} -u --pathspec-file-nul --pathspec-from-file - + read -r -a files <<< "$(git ls-files --exclude-standard --modified --others | FZF_DEFAULT_OPTS="$opts" fzf --preview="$FORGIT stash_push_preview {}")" + [[ "${#files[@]}" -eq 0 ]] && return 1 + _forgit_git_stash_push ${msg:+-m "$msg"} -u "${files[@]}" } # git clean selector @@ -636,8 +636,8 @@ _forgit_checkout_file() { --preview=\"$FORGIT checkout_file_preview {}\" $FORGIT_CHECKOUT_FILE_FZF_OPTS " - files="$(git ls-files --modified "$(git rev-parse --show-toplevel)"| FZF_DEFAULT_OPTS="$opts" fzf)" - [[ -n "$files" ]] && echo "$files" | tr '\n' '\0' | _forgit_git_checkout_file --pathspec-file-nul --pathspec-from-file - + read -r -a files <<< "$(git ls-files --modified "$(git rev-parse --show-toplevel)"| FZF_DEFAULT_OPTS="$opts" fzf)" + [[ "${#files[@]}" -gt 0 ]] && _forgit_git_checkout_file "${files[@]}" } _forgit_git_checkout_branch() {