1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
|
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
|
-
+
|
# This detects .kit but how to detect starpacks?
if {[file extension $file] eq ".kit"} {
package require vfs::mk4
vfs::mk4::Mount $file $file
# Check for contents to ensure it is a kit
if {[llength [glob -nocomplain $file/*]] == 0} {
vfs::mk4::Unmount $file $file
vfs::unmount $file
}
}
return [file isdirectory $file]
}
# A wrapper for tk_getOpenFile
proc myOpenFile {args} {
|
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
|
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
|
+
|
-nodiff : Normally, if there are enough information on the
command line to run diff, Eskil will do so unless
this option is specified.
-dir : Start in directory diff mode. Ignores other args.
-clip : Start in clip diff mode. Ignores other args.
-patch : View patch file.
-context <n>: Show only differences, with <n> lines of context.
-foreach : Open one diff window per file listed.
-noparse : Eskil can perform analysis of changed blocks to
-line : improve display. See online help for details.
-smallblock : The default. Do block analysis on small blocks.
-block : Full block analysis. This can be slow if there
are large change blocks.
|
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
|
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
|
+
|
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
}
# 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*]
|
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
|
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
|
+
|
set autobrowse 0
set dodir 0
set doclip 0
set files ""
set nextArg ""
set revNo 1
set dopatch 0
set foreach 0
foreach arg $::eskil(argv) {
if {$nextArg != ""} {
if {$nextArg eq "mergeFile"} {
set opts(mergeFile) [file join [pwd] $arg]
} elseif {$nextArg eq "printFile"} {
set opts(printFile) [file join [pwd] $arg]
} elseif {$nextArg eq "revision"} {
|
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
|
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
|
+
+
-
+
|
set dodir 1
} elseif {$arg eq "-clip"} {
set doclip 1
} elseif {$arg eq "-patch"} {
set dopatch 1
} elseif {$arg eq "-browse"} {
set autobrowse 1
} elseif {$arg eq "-foreach"} {
set foreach 1
} elseif {$arg eq "-conflict"} {
} elseif {$arg eq "-conflict"} {
set opts(mode) "conflict"
} elseif {$arg eq "-print"} {
set nextArg printFile
} elseif {$arg eq "-server"} {
if {$::tcl_platform(platform) eq "windows"} {
catch {
package require dde
|
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
|
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
set ::diff($top,$item) $val
}
# It is preferable to see the end if the rev string is too long
$::widgets($top,rev1) xview end
$::widgets($top,rev2) xview end
if {$len == 1} {
set fullname [file join [pwd] [lindex $files 0]]
set fulldir [file dirname $fullname]
if {$::diff($top,mode) eq "conflict"} {
startConflictDiff $top $fullname
after idle [list doDiff $top]
return
}
if {!$autobrowse && !$dopatch} {
# Check for revision control
set rev [detectRevSystem $fullname]
if {$rev ne ""} {
startRevMode $top $rev $fullname
if {$noautodiff} {
enableRedo $top
} else {
after idle [list doDiff $top]
}
return
}
}
# No revision control. Is it a patch file?
set ::diff($top,leftDir) $fulldir
set ::diff($top,leftFile) $fullname
set ::diff($top,leftLabel) $fullname
set ::diff($top,leftOK) 1
if {$dopatch || [regexp {\.(diff|patch)$} $fullname]} {
set ::diff($top,mode) "patch"
set ::diff($top,patchFile) $fullname
set autobrowse 0
if {$noautodiff} {
enableRedo $top
} else {
after idle [list doDiff $top]
}
return
}
if {$len == 1 || $foreach} {
set ReturnAfterLoop 0
set first 1
foreach file $files {
if {$first} {
set first 0
} else {
# Create new window for other files
makeDiffWin
update
set top [lindex $::diff(diffWindows) end]
# Copy the previously collected options
foreach {item val} [array get opts] {
set ::diff($top,$item) $val
}
# It is preferable to see the end if the rev string is too long
$::widgets($top,rev1) xview end
$::widgets($top,rev2) xview end
}
set fullname [file join [pwd] $file]
set fulldir [file dirname $fullname]
if {$::diff($top,mode) eq "conflict"} {
startConflictDiff $top $fullname
after idle [list doDiff $top]
set ReturnAfterLoop 1
continue
}
if {!$autobrowse && !$dopatch} {
# Check for revision control
set rev [detectRevSystem $fullname]
if {$rev ne ""} {
startRevMode $top $rev $fullname
if {$noautodiff} {
enableRedo $top
} else {
after idle [list doDiff $top]
}
set ReturnAfterLoop 1
continue
}
}
# No revision control. Is it a patch file?
set ::diff($top,leftDir) $fulldir
set ::diff($top,leftFile) $fullname
set ::diff($top,leftLabel) $fullname
set ::diff($top,leftOK) 1
if {$dopatch || [regexp {\.(diff|patch)$} $fullname]} {
set ::diff($top,mode) "patch"
set ::diff($top,patchFile) $fullname
set autobrowse 0
if {$noautodiff} {
enableRedo $top
} else {
after idle [list doDiff $top]
}
set ReturnAfterLoop 1
continue
}
}
if {$ReturnAfterLoop} return
} elseif {$len >= 2} {
set fullname [file join [pwd] [lindex $files 0]]
set fulldir [file dirname $fullname]
set ::diff($top,leftDir) $fulldir
set ::diff($top,leftFile) $fullname
set ::diff($top,leftLabel) $fullname
set ::diff($top,leftOK) 1
|