{"thread":{"id":"23482","subject":"[PATCH] git-gui: use textconv filter","startedAt":"2010-04-15T19:39:44Z","lastAt":"2010-04-15T19:39:44Z","messageCount":1,"participants":["Clemens Buchacher"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"139617","messageId":"20100415193944.GA5848@localhost","threadId":"23482","inReplyTo":null,"subject":"[PATCH] git-gui: use textconv filter","fromName":"Clemens Buchacher","fromEmail":"drizzd@aon.at","sentAt":"2010-04-15T19:39:44Z","receivedAt":"2010-04-15T19:39:44Z","isPatch":true,"sender":{"key":"drizzd@gmx.net","avatar":"https://avatars.githubusercontent.com/u/59082?v=4"},"body":"Use of the textconv filter in git-gui can be disabled by setting\ngui.textconv to false.\n\nStaging hunks is disabled for converted diffs.\n\nSigned-off-by: Clemens Buchacher <drizzd@aon.at>\n---\n\nThis patch applies to git://repo.or.cz/git-gui.\n\n git-gui.sh     |   28 +++++++++++++++++++++++++++-\n lib/diff.tcl   |    5 ++++-\n lib/option.tcl |    1 +\n 3 files changed, 32 insertions(+), 2 deletions(-)\n\ndiff --git a/git-gui.sh b/git-gui.sh\nindex 8996d2d..204bfea 100755\n--- a/git-gui.sh\n+++ b/git-gui.sh\n@@ -269,6 +269,17 @@ proc is_config_true {name} {\n \t}\n }\n \n+proc is_config_false {name} {\n+\tglobal repo_config\n+\tif {[catch {set v $repo_config($name)}]} {\n+\t\treturn 0\n+\t} elseif {$v eq {false} || $v eq {0} || $v eq {no}} {\n+\t\treturn 1\n+\t} else {\n+\t\treturn 0\n+\t}\n+}\n+\n proc get_config {name} {\n \tglobal repo_config\n \tif {[catch {set v $repo_config($name)}]} {\n@@ -785,6 +796,7 @@ set default_config(user.email) {}\n \n set default_config(gui.encoding) [encoding system]\n set default_config(gui.matchtrackingbranch) false\n+set default_config(gui.textconv) true\n set default_config(gui.pruneduringfetch) false\n set default_config(gui.trustmtime) false\n set default_config(gui.fastcopyblame) false\n@@ -3408,6 +3420,19 @@ lappend diff_actions [list $ctxmsm entryconf [$ctxmsm index last] -state]\n $ctxmsm add separator\n create_common_diff_popup $ctxmsm\n \n+proc has_textconv {path} {\n+\tif {[is_config_false gui.textconv]} {\n+\t\treturn 0\n+\t}\n+\tset filter [gitattr $path diff set]\n+\tset textconv [get_config [join [list diff $filter textconv] .]]\n+\tif {$filter ne {set} && $textconv ne {}} {\n+\t\treturn 1\n+\t} else {\n+\t\treturn 0\n+\t}\n+}\n+\n proc popup_diff_menu {ctxm ctxmmg ctxmsm x y X Y} {\n \tglobal current_diff_path file_states\n \tset ::cursorX $x\n@@ -3443,7 +3468,8 @@ proc popup_diff_menu {ctxm ctxmmg ctxmsm x y X Y} {\n \t\t\t|| {__} eq $state\n \t\t\t|| {_O} eq $state\n \t\t\t|| {_T} eq $state\n-\t\t\t|| {T_} eq $state} {\n+\t\t\t|| {T_} eq $state\n+\t\t\t|| [has_textconv $current_diff_path]} {\n \t\t\tset s disabled\n \t\t} else {\n \t\t\tset s normal\ndiff --git a/lib/diff.tcl b/lib/diff.tcl\nindex ec8c11e..c628750 100644\n--- a/lib/diff.tcl\n+++ b/lib/diff.tcl\n@@ -55,7 +55,7 @@ proc handle_empty_diff {} {\n \n \tset path $current_diff_path\n \tset s $file_states($path)\n-\tif {[lindex $s 0] ne {_M}} return\n+\tif {[lindex $s 0] ne {_M} || [has_textconv $path]} return\n \n \t# Prevent infinite rescan loops\n \tincr diff_empty_count\n@@ -280,6 +280,9 @@ proc start_show_diff {cont_info {add_opts {}}} {\n \t\t\tlappend cmd diff-files\n \t\t}\n \t}\n+\tif {![is_config_false gui.textconv] && [git-version >= 1.6.1]} {\n+\t\tlappend cmd --textconv\n+\t}\n \n \tif {[string match {160000 *} [lindex $s 2]]\n \t || [string match {160000 *} [lindex $s 3]]} {\ndiff --git a/lib/option.tcl b/lib/option.tcl\nindex d4c5e45..fe9d484 100644\n--- a/lib/option.tcl\n+++ b/lib/option.tcl\n@@ -148,6 +148,7 @@ proc do_options {} {\n \t\t{b gui.trustmtime  {mc \"Trust File Modification Timestamps\"}}\n \t\t{b gui.pruneduringfetch {mc \"Prune Tracking Branches During Fetch\"}}\n \t\t{b gui.matchtrackingbranch {mc \"Match Tracking Branches\"}}\n+\t\t{b gui.textconv {mc \"Use Textconv For Diffs\"}}\n \t\t{b gui.fastcopyblame {mc \"Blame Copy Only On Changed Files\"}}\n \t\t{i-20..200 gui.copyblamethreshold {mc \"Minimum Letters To Blame Copy On\"}}\n \t\t{i-0..300 gui.blamehistoryctx {mc \"Blame History Context Radius (days)\"}}\n-- \n1.7.1.rc0.27.g3b0c\n"}]}