Skip to content

Commit 92e625d

Browse files
committed
Merge branch 'master' of git://ozlabs.org/~paulus/gitk
* 'master' of git://ozlabs.org/~paulus/gitk: gitk: Update .po files gitk: l10n: Add Catalan translation gitk: Fix typo in Russian translation gitk: Remove tcl-format flag from a message that shouldn't have it gitk: Pass --invert-grep option down to "git log" gitk: Synchronize config file writes gitk: Report errors in saving config file gitk: Only write changed configuration variables gitk: Enable mouse horizontal scrolling in diff pane gitk: Default wrcomcmd to use --pretty=email
2 parents f53fc38 + c846920 commit 92e625d

File tree

13 files changed

+6449
-3482
lines changed

13 files changed

+6449
-3482
lines changed

gitk-git/gitk

Lines changed: 117 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2516,6 +2516,13 @@ proc makewindow {} {
25162516
} else {
25172517
bindall <ButtonRelease-4> "allcanvs yview scroll -5 units"
25182518
bindall <ButtonRelease-5> "allcanvs yview scroll 5 units"
2519+
bind $ctext <Button> {
2520+
if {"%b" eq 6} {
2521+
$ctext xview scroll -5 units
2522+
} elseif {"%b" eq 7} {
2523+
$ctext xview scroll 5 units
2524+
}
2525+
}
25192526
if {[tk windowingsystem] eq "aqua"} {
25202527
bindall <MouseWheel> {
25212528
set delta [expr {- (%D)}]
@@ -2776,33 +2783,87 @@ proc doprogupdate {} {
27762783
}
27772784
}
27782785

2786+
proc config_check_tmp_exists {tries_left} {
2787+
global config_file_tmp
2788+
2789+
if {[file exists $config_file_tmp]} {
2790+
incr tries_left -1
2791+
if {$tries_left > 0} {
2792+
after 100 [list config_check_tmp_exists $tries_left]
2793+
} else {
2794+
error_popup "There appears to be a stale $config_file_tmp\
2795+
file, which will prevent gitk from saving its configuration on exit.\
2796+
Please remove it if it is not being used by any existing gitk process."
2797+
}
2798+
}
2799+
}
2800+
2801+
proc config_init_trace {name} {
2802+
global config_variable_changed config_variable_original
2803+
2804+
upvar #0 $name var
2805+
set config_variable_changed($name) 0
2806+
set config_variable_original($name) $var
2807+
}
2808+
2809+
proc config_variable_change_cb {name name2 op} {
2810+
global config_variable_changed config_variable_original
2811+
2812+
upvar #0 $name var
2813+
if {$op eq "write" &&
2814+
(![info exists config_variable_original($name)] ||
2815+
$config_variable_original($name) ne $var)} {
2816+
set config_variable_changed($name) 1
2817+
}
2818+
}
2819+
27792820
proc savestuff {w} {
2780-
global viewname viewfiles viewargs viewargscmd viewperm nextviewnum
2781-
global use_ttk
27822821
global stuffsaved
27832822
global config_file config_file_tmp
2784-
global config_variables
2823+
global config_variables config_variable_changed
2824+
global viewchanged
2825+
2826+
upvar #0 viewname current_viewname
2827+
upvar #0 viewfiles current_viewfiles
2828+
upvar #0 viewargs current_viewargs
2829+
upvar #0 viewargscmd current_viewargscmd
2830+
upvar #0 viewperm current_viewperm
2831+
upvar #0 nextviewnum current_nextviewnum
2832+
upvar #0 use_ttk current_use_ttk
27852833

27862834
if {$stuffsaved} return
27872835
if {![winfo viewable .]} return
2788-
catch {
2789-
if {[file exists $config_file_tmp]} {
2790-
file delete -force $config_file_tmp
2836+
set remove_tmp 0
2837+
if {[catch {
2838+
set try_count 0
2839+
while {[catch {set f [open $config_file_tmp {WRONLY CREAT EXCL}]}]} {
2840+
if {[incr try_count] > 50} {
2841+
error "Unable to write config file: $config_file_tmp exists"
2842+
}
2843+
after 100
27912844
}
2792-
set f [open $config_file_tmp w]
2845+
set remove_tmp 1
27932846
if {$::tcl_platform(platform) eq {windows}} {
27942847
file attributes $config_file_tmp -hidden true
27952848
}
2849+
if {[file exists $config_file]} {
2850+
source $config_file
2851+
}
27962852
foreach var_name $config_variables {
27972853
upvar #0 $var_name var
2798-
puts $f [list set $var_name $var]
2854+
upvar 0 $var_name old_var
2855+
if {!$config_variable_changed($var_name) && [info exists old_var]} {
2856+
puts $f [list set $var_name $old_var]
2857+
} else {
2858+
puts $f [list set $var_name $var]
2859+
}
27992860
}
28002861

28012862
puts $f "set geometry(main) [wm geometry .]"
28022863
puts $f "set geometry(state) [wm state .]"
28032864
puts $f "set geometry(topwidth) [winfo width .tf]"
28042865
puts $f "set geometry(topheight) [winfo height .tf]"
2805-
if {$use_ttk} {
2866+
if {$current_use_ttk} {
28062867
puts $f "set geometry(pwsash0) \"[.tf.histframe.pwclist sashpos 0] 1\""
28072868
puts $f "set geometry(pwsash1) \"[.tf.histframe.pwclist sashpos 1] 1\""
28082869
} else {
@@ -2812,15 +2873,43 @@ proc savestuff {w} {
28122873
puts $f "set geometry(botwidth) [winfo width .bleft]"
28132874
puts $f "set geometry(botheight) [winfo height .bleft]"
28142875

2876+
array set view_save {}
2877+
array set views {}
2878+
if {![info exists permviews]} { set permviews {} }
2879+
foreach view $permviews {
2880+
set view_save([lindex $view 0]) 1
2881+
set views([lindex $view 0]) $view
2882+
}
28152883
puts -nonewline $f "set permviews {"
2816-
for {set v 0} {$v < $nextviewnum} {incr v} {
2817-
if {$viewperm($v)} {
2818-
puts $f "{[list $viewname($v) $viewfiles($v) $viewargs($v) $viewargscmd($v)]}"
2884+
for {set v 1} {$v < $current_nextviewnum} {incr v} {
2885+
if {$viewchanged($v)} {
2886+
if {$current_viewperm($v)} {
2887+
set views($current_viewname($v)) [list $current_viewname($v) $current_viewfiles($v) $current_viewargs($v) $current_viewargscmd($v)]
2888+
} else {
2889+
set view_save($current_viewname($v)) 0
2890+
}
2891+
}
2892+
}
2893+
# write old and updated view to their places and append remaining to the end
2894+
foreach view $permviews {
2895+
set view_name [lindex $view 0]
2896+
if {$view_save($view_name)} {
2897+
puts $f "{$views($view_name)}"
28192898
}
2899+
unset views($view_name)
2900+
}
2901+
foreach view_name [array names views] {
2902+
puts $f "{$views($view_name)}"
28202903
}
28212904
puts $f "}"
28222905
close $f
28232906
file rename -force $config_file_tmp $config_file
2907+
set remove_tmp 0
2908+
} err]} {
2909+
puts "Error saving config: $err"
2910+
}
2911+
if {$remove_tmp} {
2912+
file delete -force $config_file_tmp
28242913
}
28252914
set stuffsaved 1
28262915
}
@@ -3977,6 +4066,7 @@ set known_view_options {
39774066
{committer t15 . "--committer=*" {mc "Committer:"}}
39784067
{loginfo t15 .. "--grep=*" {mc "Commit Message:"}}
39794068
{allmatch b .. "--all-match" {mc "Matches all Commit Info criteria"}}
4069+
{igrep b .. "--invert-grep" {mc "Matches none Commit Info criteria"}}
39804070
{changes_l l + {} {mc "Changes to Files:"}}
39814071
{pickaxe_s r0 . {} {mc "Fixed String"}}
39824072
{pickaxe_t r1 . "--pickaxe-regex" {mc "Regular Expression"}}
@@ -4238,7 +4328,7 @@ proc allviewmenus {n op args} {
42384328

42394329
proc newviewok {top n {apply 0}} {
42404330
global nextviewnum newviewperm newviewname newishighlight
4241-
global viewname viewfiles viewperm selectedview curview
4331+
global viewname viewfiles viewperm viewchanged selectedview curview
42424332
global viewargs viewargscmd newviewopts viewhlmenu
42434333

42444334
if {[catch {
@@ -4259,6 +4349,7 @@ proc newviewok {top n {apply 0}} {
42594349
incr nextviewnum
42604350
set viewname($n) $newviewname($n)
42614351
set viewperm($n) $newviewopts($n,perm)
4352+
set viewchanged($n) 1
42624353
set viewfiles($n) $files
42634354
set viewargs($n) $newargs
42644355
set viewargscmd($n) $newviewopts($n,cmd)
@@ -4271,6 +4362,7 @@ proc newviewok {top n {apply 0}} {
42714362
} else {
42724363
# editing an existing view
42734364
set viewperm($n) $newviewopts($n,perm)
4365+
set viewchanged($n) 1
42744366
if {$newviewname($n) ne $viewname($n)} {
42754367
set viewname($n) $newviewname($n)
42764368
doviewmenu .bar.view 5 [list showview $n] \
@@ -4293,7 +4385,7 @@ proc newviewok {top n {apply 0}} {
42934385
}
42944386

42954387
proc delview {} {
4296-
global curview viewperm hlview selectedhlview
4388+
global curview viewperm hlview selectedhlview viewchanged
42974389

42984390
if {$curview == 0} return
42994391
if {[info exists hlview] && $hlview == $curview} {
@@ -4302,6 +4394,7 @@ proc delview {} {
43024394
}
43034395
allviewmenus $curview delete
43044396
set viewperm($curview) 0
4397+
set viewchanged($curview) 1
43054398
showview 0
43064399
}
43074400

@@ -11237,6 +11330,7 @@ proc prefspage_general {notebook} {
1123711330
${NS}::label $page.maxwidthl -text [mc "Maximum graph width (lines)"]
1123811331
spinbox $page.maxwidth -from 0 -to 100 -width 4 -textvariable maxwidth
1123911332
grid $page.spacer $page.maxwidthl $page.maxwidth -sticky w
11333+
#xgettext:no-tcl-format
1124011334
${NS}::label $page.maxpctl -text [mc "Maximum graph width (% of pane)"]
1124111335
spinbox $page.maxpct -from 1 -to 100 -width 4 -textvariable maxgraphpct
1124211336
grid x $page.maxpctl $page.maxpct -sticky w
@@ -11936,7 +12030,7 @@ if { [info exists ::env(GIT_TRACE)] } {
1193612030
}
1193712031

1193812032
# defaults...
11939-
set wrcomcmd "git diff-tree --stdin -p --pretty"
12033+
set wrcomcmd "git diff-tree --stdin -p --pretty=email"
1194012034

1194112035
set gitencoding {}
1194212036
catch {
@@ -12109,6 +12203,7 @@ catch {
1210912203
}
1211012204
source $config_file
1211112205
}
12206+
config_check_tmp_exists 50
1211212207

1211312208
set config_variables {
1211412209
mainfont textfont uifont tabstop findmergefiles maxgraphpct maxwidth
@@ -12122,6 +12217,10 @@ set config_variables {
1212212217
linehoveroutlinecolor mainheadcirclecolor workingfilescirclecolor
1212312218
indexcirclecolor circlecolors linkfgcolor circleoutlinecolor
1212412219
}
12220+
foreach var $config_variables {
12221+
config_init_trace $var
12222+
trace add variable $var write config_variable_change_cb
12223+
}
1212512224

1212612225
parsefont mainfont $mainfont
1212712226
eval font create mainfont [fontflags mainfont]
@@ -12249,6 +12348,7 @@ set highlight_related [mc "None"]
1224912348
set highlight_files {}
1225012349
set viewfiles(0) {}
1225112350
set viewperm(0) 0
12351+
set viewchanged(0) 0
1225212352
set viewargs(0) {}
1225312353
set viewargscmd(0) {}
1225412354

@@ -12307,6 +12407,7 @@ if {$cmdline_files ne {} || $revtreeargs ne {} || $revtreeargscmd ne {}} {
1230712407
set viewargs(1) $revtreeargs
1230812408
set viewargscmd(1) $revtreeargscmd
1230912409
set viewperm(1) 0
12410+
set viewchanged(1) 0
1231012411
set vdatemode(1) 0
1231112412
addviewmenu 1
1231212413
.bar.view entryconf [mca "Edit view..."] -state normal
@@ -12322,6 +12423,7 @@ if {[info exists permviews]} {
1232212423
set viewargs($n) [lindex $v 2]
1232312424
set viewargscmd($n) [lindex $v 3]
1232412425
set viewperm($n) 1
12426+
set viewchanged($n) 0
1232512427
addviewmenu $n
1232612428
}
1232712429
}

0 commit comments

Comments
 (0)