From c2f0a45d60f3bba60b9942c1dd0f45f19173f4d2 Mon Sep 17 00:00:00 2001 From: Fabian Homborg Date: Mon, 14 Aug 2017 15:48:31 +0200 Subject: [PATCH] git completions: Use modified files in the index for `reset` Fixes #4329. --- share/completions/git.fish | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/share/completions/git.fish b/share/completions/git.fish index 0984ddad3..acfcfeeb1 100644 --- a/share/completions/git.fish +++ b/share/completions/git.fish @@ -63,7 +63,7 @@ function __fish_git_modified_files set -l root (command git rev-parse --show-toplevel ^/dev/null) # Print files from the current $PWD as-is, prepend all others with ":/" (relative to toplevel in git-speak) # This is a bit simplistic but finding the lowest common directory and then replacing everything else in $PWD with ".." is a bit annoying - string replace -- "$PWD/" "" "$root/"(command git diff --name-only ^/dev/null) | string replace "$root/" ":/" + string replace -- "$PWD/" "" "$root/"(command git diff --name-only $argv ^/dev/null) | string replace "$root/" ":/" end function __fish_git_staged_files @@ -783,6 +783,8 @@ complete -c git -n '__fish_git_needs_command' -a reset -d 'Reset current HEAD to complete -f -c git -n '__fish_git_using_command reset' -l hard -d 'Reset files in working directory' complete -c git -n '__fish_git_using_command reset' -a '(__fish_git_branches)' -d 'Branch' complete -f -c git -n '__fish_git_using_command reset' -a '(__fish_git_staged_files)' -d 'File' +# reset changes the index, so we need to compare that to the commit. +complete -f -c git -n '__fish_git_using_command reset' -a '(__fish_git_modified_files --cached)' -d 'File' complete -f -c git -n '__fish_git_using_command reset' -a '(__fish_git_reflog)' -d 'Reflog' # TODO options