︙ | | | ︙ | |
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# Stop Tk from meddling with the command line by copying it first.
set ::eskil(argv) $::argv
set ::eskil(argc) $::argc
set ::argv {}
set ::argc 0
set debug 1
set diffver "Version 2.5+ 2011-04-04"
set ::thisScript [file join [pwd] [info script]]
namespace import tcl::mathop::+
namespace import tcl::mathop::-
namespace import tcl::mathop::*
namespace import tcl::mathop::/
# Do initalisations for needed packages and globals.
# This is not run until needed to speed up command line error reporting.
proc Init {} {
package require Tk 8.4
catch {package require textSearch}
package require wcb
if {[catch {package require psballoon}]} {
# Add a dummy if it does not exist.
proc addBalloon {args} {}
} else {
namespace import -force psballoon::addBalloon
}
set ::thisDir [file dirname $::thisScript]
# Follow any link
set tmplink $::thisScript
while {[file type $tmplink] eq "link"} {
set tmplink [file readlink $tmplink]
set tmplink [file normalize [file join $::thisDir $tmplink]]
set ::thisDir [file dirname $tmplink]
}
# Get all other source files
source $::thisDir/clip.tcl
source $::thisDir/compare.tcl
source $::thisDir/map.tcl
source $::thisDir/merge.tcl
source $::thisDir/registry.tcl
source $::thisDir/dirdiff.tcl
source $::thisDir/help.tcl
source $::thisDir/plugin.tcl
source $::thisDir/printobj.tcl
source $::thisDir/print.tcl
source $::thisDir/rev.tcl
set ::util(diffexe) diff
# Diff functionality is in the DiffUtil package.
package require DiffUtil
# Help DiffUtil to find a diff executable, if needed
catch {DiffUtil::LocateDiffExe $::thisScript}
# Figure out a place to store temporary files.
locateTmp ::diff(tmpdir)
if {$::tcl_platform(platform) eq "windows"} {
# Locate CVS if it is in c:/bin
if {[auto_execok cvs] eq "" && [file exists "c:/bin/cvs.exe"]} {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# Stop Tk from meddling with the command line by copying it first.
set ::eskil(argv) $::argv
set ::eskil(argc) $::argc
set ::argv {}
set ::argc 0
set ::eskil(debug) 1
set ::eskil(diffver) "Version 2.5+ 2011-04-04"
set ::eskil(thisScript) [file join [pwd] [info script]]
namespace import tcl::mathop::+
namespace import tcl::mathop::-
namespace import tcl::mathop::*
namespace import tcl::mathop::/
# Do initalisations for needed packages and globals.
# This is not run until needed to speed up command line error reporting.
proc Init {} {
package require Tk 8.4
catch {package require textSearch}
package require wcb
if {[catch {package require psballoon}]} {
# Add a dummy if it does not exist.
proc addBalloon {args} {}
} else {
namespace import -force psballoon::addBalloon
}
set ::eskil(thisDir) [file dirname $::eskil(thisScript)]
# Follow any link
set tmplink $::eskil(thisScript)
while {[file type $tmplink] eq "link"} {
set tmplink [file readlink $tmplink]
set tmplink [file normalize [file join $::eskil(thisDir) $tmplink]]
set ::eskil(thisDir) [file dirname $tmplink]
}
# Get all other source files
source $::eskil(thisDir)/clip.tcl
source $::eskil(thisDir)/compare.tcl
source $::eskil(thisDir)/map.tcl
source $::eskil(thisDir)/merge.tcl
source $::eskil(thisDir)/registry.tcl
source $::eskil(thisDir)/dirdiff.tcl
source $::eskil(thisDir)/help.tcl
source $::eskil(thisDir)/plugin.tcl
source $::eskil(thisDir)/printobj.tcl
source $::eskil(thisDir)/print.tcl
source $::eskil(thisDir)/rev.tcl
set ::util(diffexe) diff
# Diff functionality is in the DiffUtil package.
package require DiffUtil
# Help DiffUtil to find a diff executable, if needed
catch {DiffUtil::LocateDiffExe $::eskil(thisScript)}
# Figure out a place to store temporary files.
locateTmp ::diff(tmpdir)
if {$::tcl_platform(platform) eq "windows"} {
# Locate CVS if it is in c:/bin
if {[auto_execok cvs] eq "" && [file exists "c:/bin/cvs.exe"]} {
|
︙ | | | ︙ | |
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
}
interp alias {} toplevel {} ttk::toplevel
}
# Debug function to be able to reread the source even when wrapped in a kit.
proc EskilRereadSource {} {
set this $::thisScript
# FIXA: Better detection of starkit?
# Maybe look at ::starkit::topdir ?
#if {[info exists ::starkit::topdir]} {
# puts "Topdir: $::starkit::topdir"
#}
|
|
|
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
}
interp alias {} toplevel {} ttk::toplevel
}
# Debug function to be able to reread the source even when wrapped in a kit.
proc EskilRereadSource {} {
set this $::eskil(thisScript)
# FIXA: Better detection of starkit?
# Maybe look at ::starkit::topdir ?
#if {[info exists ::starkit::topdir]} {
# puts "Topdir: $::starkit::topdir"
#}
|
︙ | | | ︙ | |
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
|
# This is for scroll bindings in the toplevel.
if {[winfo class [focus]] != "Text"} {
$::widgets($top,wDiff1) yview scroll $n $what
}
}
# Experiment using snit
lappend ::auto_path [file dirname [file dirname $::thisScript]]/lib
#puts $::auto_path
if {[catch {package require snit}]} {
namespace eval snit {
proc widgetadaptor {args} {}
}
}
# Emulate a label that:
|
|
|
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
|
# This is for scroll bindings in the toplevel.
if {[winfo class [focus]] != "Text"} {
$::widgets($top,wDiff1) yview scroll $n $what
}
}
# Experiment using snit
lappend ::auto_path [file dirname [file dirname $::eskil(thisScript)]]/lib
#puts $::auto_path
if {[catch {package require snit}]} {
namespace eval snit {
proc widgetadaptor {args} {}
}
}
# Emulate a label that:
|
︙ | | | ︙ | |
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
|
}
# A thing to easily get to debug mode
proc backDoor {a} {
append ::eskil(backdoor) $a
set ::eskil(backdoor) [string range $::eskil(backdoor) end-9 end]
if {$::eskil(backdoor) eq "PeterDebug"} {
set ::debug 1
catch {console show}
set ::eskil(backdoor) ""
}
}
# Build the main window
proc makeDiffWin {{top {}}} {
global Pref tcl_platform debug
if {$top != "" && [winfo exists $top] && [winfo toplevel $top] eq $top} {
# Reuse the old window
destroy {*}[winfo children $top]
} else {
# Locate a free toplevel name
if {[info exists ::diff(topDiffCnt)]} {
|
|
|
|
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
|
}
# A thing to easily get to debug mode
proc backDoor {a} {
append ::eskil(backdoor) $a
set ::eskil(backdoor) [string range $::eskil(backdoor) end-9 end]
if {$::eskil(backdoor) eq "PeterDebug"} {
set ::eskil(debug) 1
catch {console show}
set ::eskil(backdoor) ""
}
}
# Build the main window
proc makeDiffWin {{top {}}} {
global Pref tcl_platform
if {$top != "" && [winfo exists $top] && [winfo toplevel $top] eq $top} {
# Reuse the old window
destroy {*}[winfo children $top]
} else {
# Locate a free toplevel name
if {[info exists ::diff(topDiffCnt)]} {
|
︙ | | | ︙ | |
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
|
menu $top.m
$top configure -menu $top.m
$top.m add cascade -label "File" -underline 0 -menu $top.m.mf
menu $top.m.mf
$top.m.mf add command -label "Redo Diff" -underline 5 \
-command [list redoDiff $top] -state disabled
if {$debug == 1} {
$top.m.mf entryconfigure "Redo Diff" -state normal
}
$top.m.mf add separator
$top.m.mf add command -label "Open Both..." -underline 0 \
-command [list openBoth $top 0]
$top.m.mf add command -label "Open Both (forget)..." \
-command [list openBoth $top 1]
|
|
|
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
|
menu $top.m
$top configure -menu $top.m
$top.m add cascade -label "File" -underline 0 -menu $top.m.mf
menu $top.m.mf
$top.m.mf add command -label "Redo Diff" -underline 5 \
-command [list redoDiff $top] -state disabled
if {$::eskil(debug) == 1} {
$top.m.mf entryconfigure "Redo Diff" -state normal
}
$top.m.mf add separator
$top.m.mf add command -label "Open Both..." -underline 0 \
-command [list openBoth $top 0]
$top.m.mf add command -label "Open Both (forget)..." \
-command [list openBoth $top 1]
|
︙ | | | ︙ | |
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
|
grid $top.ls -sticky ""
bind $top <Key-Up> [list scrollText $top -1 u]
bind $top <Key-Down> [list scrollText $top 1 u]
bind $top <Key-Prior> [list scrollText $top -1 pa]
bind $top <Key-Next> [list scrollText $top 1 pa]
bind $top <Key-Escape> [list focus $top]
if {$debug == 0} {
bind $top <Key> "backDoor %A"
}
pack $top.bfn -in $top.f -side right -padx {3 6}
pack $top.bfp $top.bcm $top.blg \
$top.er2 $top.lr2 $top.er1 $top.lr1 \
-in $top.f -side right -padx 3
pack $top.bfn $top.bfp $top.bcm -ipadx 15
if {$debug == 1} {
$top.m add cascade -label "Debug" -menu $top.m.md -underline 0
menu $top.m.md
if {$tcl_platform(platform) eq "windows"} {
$top.m.md add checkbutton -label "Console" -variable consolestate \
-onvalue show -offvalue hide \
-command {console $consolestate}
$top.m.md add separator
|
|
|
|
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
|
grid $top.ls -sticky ""
bind $top <Key-Up> [list scrollText $top -1 u]
bind $top <Key-Down> [list scrollText $top 1 u]
bind $top <Key-Prior> [list scrollText $top -1 pa]
bind $top <Key-Next> [list scrollText $top 1 pa]
bind $top <Key-Escape> [list focus $top]
if {$::eskil(debug) == 0} {
bind $top <Key> "backDoor %A"
}
pack $top.bfn -in $top.f -side right -padx {3 6}
pack $top.bfp $top.bcm $top.blg \
$top.er2 $top.lr2 $top.er1 $top.lr1 \
-in $top.f -side right -padx 3
pack $top.bfn $top.bfp $top.bcm -ipadx 15
if {$::eskil(debug) == 1} {
$top.m add cascade -label "Debug" -menu $top.m.md -underline 0
menu $top.m.md
if {$tcl_platform(platform) eq "windows"} {
$top.m.md add checkbutton -label "Console" -variable consolestate \
-onvalue show -offvalue hide \
-command {console $consolestate}
$top.m.md add separator
|
︙ | | | ︙ | |
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
|
tk appname Eskil
}
} elseif {$arg eq "-o"} {
set nextArg mergeFile
} elseif {$arg eq "-r"} {
set nextArg revision
} elseif {$arg eq "-debug"} {
set ::debug 1
} elseif {$arg eq "-svn"} {
set preferedRev "SVN"
} elseif {$arg eq "-cvs"} {
set preferedRev "CVS"
} elseif {$arg eq "-"} {
# Allow "-" for stdin patch processing
lappend files "-"
|
|
|
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
|
tk appname Eskil
}
} elseif {$arg eq "-o"} {
set nextArg mergeFile
} elseif {$arg eq "-r"} {
set nextArg revision
} elseif {$arg eq "-debug"} {
set ::eskil(debug) 1
} elseif {$arg eq "-svn"} {
set preferedRev "SVN"
} elseif {$arg eq "-cvs"} {
set preferedRev "CVS"
} elseif {$arg eq "-"} {
# Allow "-" for stdin patch processing
lappend files "-"
|
︙ | | | ︙ | |
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
|
grid remove \$__
}
}
\# "
}
# Global code is only run the first time to be able to reread source
if {![info exists gurkmeja]} {
set gurkmeja 1
package require pstools
namespace import -force pstools::*
getOptions
if {![info exists ::eskil_testsuite]} {
parseCommandLine
}
}
|
|
|
|
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
|
grid remove \$__
}
}
\# "
}
# Global code is only run the first time to be able to reread source
if {![info exists ::eskil(gurkmeja)]} {
set ::eskil(gurkmeja) 1
package require pstools
namespace import -force pstools::*
getOptions
if {![info exists ::eskil_testsuite]} {
parseCommandLine
}
}
|