diff --git a/functions/_fzf_preview_changed_file.fish b/functions/_fzf_preview_changed_file.fish index 3c3df80a..e22139f3 100644 --- a/functions/_fzf_preview_changed_file.fish +++ b/functions/_fzf_preview_changed_file.fish @@ -9,7 +9,7 @@ function _fzf_preview_changed_file --argument-names path_status --description "S # https://fishshell.com/docs/current/fish_for_bash_users.html set -l path (string unescape (string sub --start 4 $path_status)) # first letter of short format shows index, second letter shows working tree - # https://git-scm.com/docs/git-status/2.35.0#_output + # https://git-scm.com/docs/git-status/2.35.0#_short_format set -l index_status (string sub --length 1 $path_status) set -l working_tree_status (string sub --start 2 --length 1 $path_status) # no-prefix because the file is always being compared to itself so is unecessary @@ -18,9 +18,10 @@ function _fzf_preview_changed_file --argument-names path_status --description "S if test $index_status = '?' _fzf_report_diff_type Untracked _fzf_preview_file $path - else if contains {$index_status}$working_tree_status UD DU UU AA - # inferred from # https://stackoverflow.com/questions/22792906/how-do-i-produce-every-possible-git-status - # the above 4 statuses are the only possible ones for a merge conflict + else if contains {$index_status}$working_tree_status DD AU UD UA DU AA UU + # Unmerged statuses taken directly from git status help's short format table + # Unmerged statuses are mutually exclusive with other statuses, so if we see + # these, then safe to assume the path is unmerged _fzf_report_diff_type Unmerged git diff $diff_opts -- $path else