mergetool--lib: improve show_tool_help() output
authorDavid Aguilar <davvid@gmail.com>
Fri, 25 Jan 2013 09:43:54 +0000 (01:43 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 28 Jan 2013 02:32:54 +0000 (18:32 -0800)
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 <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-mergetool--lib.sh

index 4c1e1292a68b28cc88483fc5edc0df775cf6eec4..aa38bd18bfaa3b1d79a7370b7b6cefbacb169556 100644 (file)
@@ -175,17 +175,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