* [PATCH] git-gui: use textconv filter
@ 2010-04-15 19:39 Clemens Buchacher
0 siblings, 0 replies; only message in thread
From: Clemens Buchacher @ 2010-04-15 19:39 UTC (permalink / raw)
To: Shawn O. Pearce; +Cc: git
Use of the textconv filter in git-gui can be disabled by setting
gui.textconv to false.
Staging hunks is disabled for converted diffs.
Signed-off-by: Clemens Buchacher <drizzd@aon.at>
---
This patch applies to git://repo.or.cz/git-gui.
git-gui.sh | 28 +++++++++++++++++++++++++++-
lib/diff.tcl | 5 ++++-
lib/option.tcl | 1 +
3 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/git-gui.sh b/git-gui.sh
index 8996d2d..204bfea 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -269,6 +269,17 @@ proc is_config_true {name} {
}
}
+proc is_config_false {name} {
+ global repo_config
+ if {[catch {set v $repo_config($name)}]} {
+ return 0
+ } elseif {$v eq {false} || $v eq {0} || $v eq {no}} {
+ return 1
+ } else {
+ return 0
+ }
+}
+
proc get_config {name} {
global repo_config
if {[catch {set v $repo_config($name)}]} {
@@ -785,6 +796,7 @@ set default_config(user.email) {}
set default_config(gui.encoding) [encoding system]
set default_config(gui.matchtrackingbranch) false
+set default_config(gui.textconv) true
set default_config(gui.pruneduringfetch) false
set default_config(gui.trustmtime) false
set default_config(gui.fastcopyblame) false
@@ -3408,6 +3420,19 @@ lappend diff_actions [list $ctxmsm entryconf [$ctxmsm index last] -state]
$ctxmsm add separator
create_common_diff_popup $ctxmsm
+proc has_textconv {path} {
+ if {[is_config_false gui.textconv]} {
+ return 0
+ }
+ set filter [gitattr $path diff set]
+ set textconv [get_config [join [list diff $filter textconv] .]]
+ if {$filter ne {set} && $textconv ne {}} {
+ return 1
+ } else {
+ return 0
+ }
+}
+
proc popup_diff_menu {ctxm ctxmmg ctxmsm x y X Y} {
global current_diff_path file_states
set ::cursorX $x
@@ -3443,7 +3468,8 @@ proc popup_diff_menu {ctxm ctxmmg ctxmsm x y X Y} {
|| {__} eq $state
|| {_O} eq $state
|| {_T} eq $state
- || {T_} eq $state} {
+ || {T_} eq $state
+ || [has_textconv $current_diff_path]} {
set s disabled
} else {
set s normal
diff --git a/lib/diff.tcl b/lib/diff.tcl
index ec8c11e..c628750 100644
--- a/lib/diff.tcl
+++ b/lib/diff.tcl
@@ -55,7 +55,7 @@ proc handle_empty_diff {} {
set path $current_diff_path
set s $file_states($path)
- if {[lindex $s 0] ne {_M}} return
+ if {[lindex $s 0] ne {_M} || [has_textconv $path]} return
# Prevent infinite rescan loops
incr diff_empty_count
@@ -280,6 +280,9 @@ proc start_show_diff {cont_info {add_opts {}}} {
lappend cmd diff-files
}
}
+ if {![is_config_false gui.textconv] && [git-version >= 1.6.1]} {
+ lappend cmd --textconv
+ }
if {[string match {160000 *} [lindex $s 2]]
|| [string match {160000 *} [lindex $s 3]]} {
diff --git a/lib/option.tcl b/lib/option.tcl
index d4c5e45..fe9d484 100644
--- a/lib/option.tcl
+++ b/lib/option.tcl
@@ -148,6 +148,7 @@ proc do_options {} {
{b gui.trustmtime {mc "Trust File Modification Timestamps"}}
{b gui.pruneduringfetch {mc "Prune Tracking Branches During Fetch"}}
{b gui.matchtrackingbranch {mc "Match Tracking Branches"}}
+ {b gui.textconv {mc "Use Textconv For Diffs"}}
{b gui.fastcopyblame {mc "Blame Copy Only On Changed Files"}}
{i-20..200 gui.copyblamethreshold {mc "Minimum Letters To Blame Copy On"}}
{i-0..300 gui.blamehistoryctx {mc "Blame History Context Radius (days)"}}
--
1.7.1.rc0.27.g3b0c
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2010-04-15 19:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-15 19:39 [PATCH] git-gui: use textconv filter Clemens Buchacher
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).