diff options
Diffstat (limited to 'git-gui/lib/diff.tcl')
| -rw-r--r-- | git-gui/lib/diff.tcl | 23 | 
1 files changed, 22 insertions, 1 deletions
diff --git a/git-gui/lib/diff.tcl b/git-gui/lib/diff.tcl index 30d9a79776..0d56986215 100644 --- a/git-gui/lib/diff.tcl +++ b/git-gui/lib/diff.tcl @@ -1,6 +1,19 @@  # git-gui diff viewer  # Copyright (C) 2006, 2007 Shawn Pearce +proc apply_tab_size {{firsttab {}}} { +	global have_tk85 repo_config ui_diff + +	set w [font measure font_diff "0"] +	if {$have_tk85 && $firsttab != 0} { +		$ui_diff configure -tabs [list [expr {$firsttab * $w}] [expr {($firsttab + $repo_config(gui.tabsize)) * $w}]] +	} elseif {$have_tk85 || $repo_config(gui.tabsize) != 8} { +		$ui_diff configure -tabs [expr {$repo_config(gui.tabsize) * $w}] +	} else { +		$ui_diff configure -tabs {} +	} +} +  proc clear_diff {} {  	global ui_diff current_diff_path current_diff_header  	global ui_index ui_workdir @@ -105,6 +118,8 @@ proc show_diff {path w {lno {}} {scroll_pos {}} {callback {}}} {  	set cont_info [list $scroll_pos $callback] +	apply_tab_size 0 +  	if {[string first {U} $m] >= 0} {  		merge_load_stages $path [list show_unmerged_diff $cont_info]  	} elseif {$m eq {_O}} { @@ -287,6 +302,9 @@ proc start_show_diff {cont_info {add_opts {}}} {  	if {$w eq $ui_index} {  		lappend cmd diff-index  		lappend cmd --cached +		if {[git-version >= "1.7.2"]} { +			lappend cmd --ignore-submodules=dirty +		}  	} elseif {$w eq $ui_workdir} {  		if {[string first {U} $m] >= 0} {  			lappend cmd diff @@ -398,7 +416,10 @@ proc read_diff {fd conflict_size cont_info} {  		# -- Automatically detect if this is a 3 way diff.  		# -		if {[string match {@@@ *} $line]} {set is_3way_diff 1} +		if {[string match {@@@ *} $line]} { +			set is_3way_diff 1 +			apply_tab_size 1 +		}  		if {$::current_diff_inheader} {  | 
