git-gui: Cleanup diff construction code to prepare for more options.
[gitweb.git] / git-gui
diff --git a/git-gui b/git-gui
index fdb82812bd14304ae78ae5c66ef4f6572f509f4f..ea71526e6065bbade5b97a8a0ff38cca467518ec 100755 (executable)
--- a/git-gui
+++ b/git-gui
@@ -488,7 +488,7 @@ prevent possible confusion.
 
 proc show_diff {path {w {}} {lno {}}} {
        global file_states file_lists
-       global PARENT diff_3way diff_active
+       global PARENT diff_3way diff_active repo_config
        global ui_diff ui_fname_value ui_fstatus_value ui_status_value
 
        if {$diff_active || ![lock_index read]} return
@@ -515,10 +515,13 @@ proc show_diff {path {w {}} {lno {}}} {
        set ui_fstatus_value [mapdesc $m $path]
        set ui_status_value "Loading diff of [escape_path $path]..."
 
-       set cmd [list | git diff-index -p $PARENT -- $path]
+       set cmd [list | git diff-index]
+       lappend cmd --no-color
+       lappend cmd -p
+
        switch $m {
        MM {
-               set cmd [list | git diff-index -p -c $PARENT $path]
+               lappend cmd -c
        }
        _O {
                if {[catch {
@@ -542,6 +545,10 @@ proc show_diff {path {w {}} {lno {}}} {
        }
        }
 
+       lappend cmd $PARENT
+       lappend cmd --
+       lappend cmd $path
+
        if {[catch {set fd [open $cmd r]} err]} {
                set diff_active 0
                unlock_index
@@ -1178,7 +1185,7 @@ proc write_update_index {fd pathList totalCnt batch} {
                close $fd
                unlock_index
                if {$update_index_rsd} {
-                       show_diff $ui_fname_value
+                       reshow_diff
                } else {
                        set ui_status_value {Ready.}
                }