︙ | | |
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
-
+
|
# Add a dummy if it does not exist.
proc addBalloon {args} {}
} else {
namespace import -force psballoon::addBalloon
}
set debug 0
set diffver "Version 2.0.3+ 2004-06-16"
set diffver "Version 2.0.4 2004-06-17"
set thisScript [file join [pwd] [info script]]
set thisDir [file dirname $thisScript]
# Follow any link
set tmplink $thisScript
while {[file type $tmplink] eq "link"} {
set tmplink [file readlink $tmplink]
|
︙ | | |
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
-
+
|
}
return $elem
}
# Decide how to display change blocks
# This tries to match the lines that resemble each other and put them
# next to each other.
# As the previous procedure, this would need a complete rework and a
# As compareLines2, this would need a complete rework and a
# better algorithm.
proc compareBlocks {block1 block2} {
set size1 [llength $block1]
set size2 [llength $block2]
# Swap if block1 is bigger
if {$size1 > $size2} {
|
︙ | | |
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
|
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
|
-
-
-
+
+
+
+
|
}
#puts "Bestsum: $bestsum"
# origresult holds a mapping between blocks where each row
# is paired with its best match. This may not be a possible
# result since it has to be in order.
set bestresult $origresult
set bestscoresum -100000
#puts "Origresult: $origresult"
# If the size is 1, it is automatically in order so we
# don't need further processing.
if {$size1 > 1} {
# Start with a check if the theoretical best works, since often that
# is the case.
set order 1
set result $origresult
for {set i 0} {$i < ($size1 - 1)} {incr i} {
if {[lindex $result $i] >= [lindex $result [expr {$i + 1}]]} {
set order 0
break
}
}
#if {$order} {puts "ORDER"}
}
set bestresult $origresult
set bestscoresum -100000
if {$size1 > 1 && $order == 0} {
# Look through the obvious "subblock" alternatives
for {set startj 0} {$startj < ($size2 - $size1 + 1)} {incr startj} {
set sum 0
set result $emptyResult
for {set i 0 ; set j $startj} {$i < $size1} {incr i ; incr j} {
|
︙ | | |
509
510
511
512
513
514
515
516
517
518
519
520
521
522
|
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
|
+
|
return
}
set ::diff(filterflag) 0
}
if {$Pref(parse) != 0} {
set opts $Pref(ignore)
if {$Pref(nocase)} {lappend opts -nocase}
if {$Pref(lineparsewords)} {lappend opts -words}
set res [eval DiffUtil::diffStrings $opts \$line1 \$line2]
set dotag 0
set n [expr {[llength $res] / 2}]
$::widgets($top,wLine1) insert end [myFormL $doingLine1] "hl$::HighLightCount change"
$::widgets($top,wLine2) insert end [myFormL $doingLine2] "hl$::HighLightCount change"
set new1 "new1"
|
︙ | | |
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
|
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
|
+
|
return
} else {
prepareFiles $top
}
# Run diff and parse the result.
set opts $Pref(ignore)
if {$Pref(nocase)} {lappend opts -nocase}
if {[info exists ::diff($top,aligns)] && \
[llength $::diff($top,aligns)] > 0} {
lappend opts -align $::diff($top,aligns)
}
set range {}
if {[info exists ::diff($top,range)] && \
[llength $::diff($top,range)] == 4} {
|
︙ | | |
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
|
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
|
+
+
|
}
proc openConflict {top} {
global Pref
if {[doOpenRight $top]} {
set ::diff($top,mode) "conflict"
set Pref(ignore) " "
set Pref(nocase) 0
set ::diff($top,conflictFile) $::diff($top,rightFile)
set ::diff($top,mergeFile) ""
doDiff $top
}
}
proc openPatch {top} {
global Pref
if {[doOpenLeft $top]} {
set ::diff($top,mode) "patch"
set Pref(ignore) " "
set Pref(nocase) 0
set ::diff($top,patchFile) $::diff($top,leftFile)
doDiff $top
}
}
proc openRCS {top} {
if {[doOpenRight $top]} {
|
︙ | | |
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
|
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
|
-
+
+
+
+
|
-command chFont
$top.mo.mf add radiobutton -label 9 -variable Pref(fontsize) -value 9 \
-command chFont
$top.mo.mf add radiobutton -label 10 -variable Pref(fontsize) -value 10 \
-command chFont
menu $top.mo.mi
$top.mo.mi add radiobutton -label "Nothing" \
$top.mo.mi add radiobutton -label "No spaces" \
-variable Pref(ignore) -value " "
$top.mo.mi add radiobutton -label "Space changes (-b)" \
-variable Pref(ignore) -value "-b"
$top.mo.mi add radiobutton -label "All spaces (-w)" \
-variable Pref(ignore) -value "-w"
$top.mo.mi add separator
$top.mo.mi add checkbutton -label "Case (-i)" \
-variable Pref(nocase)
menu $top.mo.mp
$top.mo.mp add radiobutton -label "Nothing" -variable Pref(parse) -value 0
$top.mo.mp add radiobutton -label "Lines" -variable Pref(parse) -value 1
$top.mo.mp add radiobutton -label "Blocks (small)" -variable Pref(parse) \
-value 2
$top.mo.mp add radiobutton -label "Blocks" -variable Pref(parse) -value 3
|
︙ | | |
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
|
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
|
+
|
-char : The analysis of changes can be done on either
-word : character or word basis. -char is the default.
-noignore : Don't ignore any whitespace.
-b : Ignore space changes. Default.
-w : Ignore all spaces.
-nocase : Ignore case changes.
-conflict : Treat file as a merge conflict file and enter merge
mode.
-o <file> : Specify merge result output file.
-browse : Automatically bring up file dialog after starting.
-server : Set up Eskil to be controllable from the outside.
|
︙ | | |
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
|
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
|
+
+
+
+
|
} elseif {$arg eq "--help" || $arg eq "-help"} {
printUsage
exit
} elseif {$arg eq "-b"} {
set Pref(ignore) "-b"
} elseif {$arg eq "-noignore"} {
set Pref(ignore) " "
} elseif {$arg eq "-i"} {
set Pref(nocase) 1
} elseif {$arg eq "-nocase"} {
set Pref(nocase) 1
} elseif {$arg eq "-noparse"} {
set Pref(parse) 0
} elseif {$arg eq "-line"} {
set Pref(parse) 1
} elseif {$arg eq "-smallblock"} {
set Pref(parse) 2
} elseif {$arg eq "-block"} {
|
︙ | | |
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
|
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
|
+
|
} elseif {$arg eq "-clip"} {
set doclip 1
} elseif {$arg eq "-browse"} {
set autobrowse 1
} elseif {$arg eq "-conflict"} {
set opts(mode) "conflict"
set Pref(ignore) " "
set Pref(nocase) 0
} elseif {$arg eq "-print"} {
set nextArg printFile
} elseif {$arg eq "-server"} {
if {$::tcl_platform(platform) eq "windows"} {
catch {
package require dde
dde servername Eskil
|
︙ | | |
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
|
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
|
+
|
proc getOptions {} {
global Pref
set Pref(fontsize) 8
set Pref(fontfamily) Courier
set Pref(ignore) "-b"
set Pref(nocase) 0
set Pref(parse) 2
set Pref(lineparsewords) 0
set Pref(colorchange) red
set Pref(colornew1) darkgreen
set Pref(colornew2) blue
set Pref(bgchange) #ffe0e0
set Pref(bgnew1) #a0ffa0
|
︙ | | |