Check the can_diff and can_merge functions before deciding whether to
add the tool to the available/unavailable lists.  This makes --tool-help 
context-
sensitive so that "git mergetool --tool-help" displays merge tools only
and "git difftool --tool-help" displays diff tools only.

Signed-off-by: David Aguilar <dav...@gmail.com>
---
 git-mergetool--lib.sh | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index db8218a..c547c59 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -168,17 +168,33 @@ list_merge_tool_candidates () {
 }
 
 show_tool_help () {
-       list_merge_tool_candidates
        unavailable= available= LF='
 '
-       for i in $tools
+
+       scriptlets="$(git --exec-path)"/mergetools
+       for i in "$scriptlets"/*
        do
-               merge_tool_path=$(translate_merge_tool_path "$i")
+               . "$scriptlets"/defaults
+               . "$i"
+
+               tool="$(basename "$i")"
+               if test "$tool" = "defaults"
+               then
+                       continue
+               elif merge_mode && ! can_merge
+               then
+                       continue
+               elif diff_mode && ! can_diff
+               then
+                       continue
+               fi
+
+               merge_tool_path=$(translate_merge_tool_path "$tool")
                if type "$merge_tool_path" >/dev/null 2>&1
                then
-                       available="$available$i$LF"
+                       available="$available$tool$LF"
                else
-                       unavailable="$unavailable$i$LF"
+                       unavailable="$unavailable$tool$LF"
                fi
        done
 
-- 
1.8.1.1.367.g22b1720.dirty

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to