︙ | | |
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
-
-
+
+
|
# 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.0.7+ 2005-07-21"
set debug 0
set diffver "Version 2.0.7+ 2005-12-25"
set ::thisScript [file join [pwd] [info script]]
# 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}
|
︙ | | |
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
|
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
|
-
+
+
|
} else {
wm title $top "Eskil: $tail2 vs $tail1"
}
# Run diff and parse the result.
set opts $Pref(ignore)
if {$Pref(nocase)} {lappend opts -nocase}
if {$Pref(nodigit)} {lappend opts -nodigit}
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} {
set range $::diff($top,range)
lappend opts -range $range
}
if {[llength $Pref(regsub)] > 0} {
lappend opts -regsub $Pref(regsub)
}
# Apply nodigit after preprocess
if {$Pref(nodigit)} {lappend opts -nodigit}
set differr [catch {eval DiffUtil::diffFiles $opts \
\$::diff($top,leftFile) \$::diff($top,rightFile)} diffres]
# In conflict mode we can use the diff information collected when
# parsing the conflict file. This makes sure the blocks in the conflict
# file become change-blocks during merge.
|
︙ | | |
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
|
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
|
-
+
|
set result {}
for {set t 1} {[info exists ::diff($top,prefregexp$t)]} {incr t} {
set RE $::diff($top,prefregexp$t)
set Sub $::diff($top,prefregsub$t)
if {$RE eq ""} continue
if {[catch {regsub -all $RE $exa $Sub _} err]} {
if {[catch {regsub -all -- $RE $exa $Sub _} err]} {
return
}
lappend result $RE $Sub
}
set ::Pref(regsub) $result
destroy $w
|
︙ | | |
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
|
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
|
-
+
-
+
|
for {set t 1} {[info exists ::diff($top,prefregexp$t)]} {incr t} {
set RE $::diff($top,prefregexp$t)
set Sub $::diff($top,prefregsub$t)
if {$RE eq ""} continue
if {[catch {regsub -all $RE $exa $Sub result} err]} {
if {[catch {regsub -all -- $RE $exa $Sub result} err]} {
set ::diff($top,prefregresult) "$t ERROR: $err"
$ok configure -state disabled
return
} else {
set exa $result
}
if {[catch {regsub -all $RE $exa2 $Sub result} err]} {
if {[catch {regsub -all -- $RE $exa2 $Sub result} err]} {
set ::diff($top,prefregresult2) "$t ERROR: $err"
$ok configure -state disabled
return
} else {
set exa2 $result
}
}
|
︙ | | |
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
|
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
|
+
|
-b : Ignore space changes. Default.
-w : Ignore all spaces.
-nocase : Ignore case changes.
-nodigit : Ignore digit changes.
-nokeyword : In directory diff, ignore $ Keywords: $
-prefix <str> : Care mainly about words starting with "str".
-preprocess <pair> : TBW
-r <ver> : Version info for CVS/RCS/ClearCase diff.
-conflict : Treat file as a merge conflict file and enter merge
mode.
-o <file> : Specify merge result output file.
|
︙ | | |
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
|
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
|
-
+
|
return
}
set allOpts {
-w --help -help -b -noignore -i -nocase -nodigit -nokeyword -prefix
-noparse -line -smallblock -block -char -word -limit -nodiff -dir
-clip -patch -browse -conflict -print -server -o -r -context
-foreach
-foreach -preprocess
}
# If the first option is "--query", use it to ask about options.
if {$::eskil(argc) == 2 && [lindex $::eskil(argv) 0] == "--query"} {
set arg [lindex $::eskil(argv) 1]
if {[lsearch -exact $allOpts $arg] < 0} {
set match [lsearch -glob -all -inline $allOpts $arg*]
|
︙ | | |
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
|
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
|
-
+
+
+
+
+
+
+
+
+
+
+
+
|
} elseif {$nextArg eq "context"} {
set Pref(context) $arg
} elseif {$nextArg eq "prefix"} {
set RE [string map [list % $arg] {^.*?\m(%\w+).*$}]
if {$Pref(nocase)} {
set RE "(?i)$RE"
}
set ::Pref(regsub) [list $RE {\1}]
lappend ::Pref(regsub) $RE {\1}
} elseif {$nextArg eq "preprocess"} {
if {[catch {llength $arg} len]} {
} elseif {[llength $arg] % 2 == 1} {
} else {
# FIXA: better validity check
foreach {RE sub} $arg {
lappend ::Pref(regsub) $RE $sub
}
}
}
set nextArg ""
continue
}
# Take care of the special case of RCS style -r<rev>
if {[string range $arg 0 1] eq "-r" && [string length $arg] > 2} {
set opts(doptrev$revNo) [string range $arg 2 end]
|
︙ | | |
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
|
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
|
+
+
|
set Pref(nocase) 1
} elseif {$arg eq "-nodigit"} {
set Pref(nodigit) 1
} elseif {$arg eq "-nokeyword"} {
set Pref(dir,ignorekey) 1
} elseif {$arg eq "-prefix"} {
set nextArg prefix
} elseif {$arg eq "-preprocess"} {
set nextArg preprocess
} elseif {$arg eq "-context"} {
set nextArg context
} elseif {$arg eq "-noparse"} {
set Pref(parse) 0
} elseif {$arg eq "-line"} {
set Pref(parse) 1
} elseif {$arg eq "-smallblock"} {
|
︙ | | |