Eskil

Check-in [b94817f6ae]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Moved experiment to dirdiff src
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: b94817f6aed8bb63efffb58ce2aa3d092c841ca7
User & Date: peter 2014-11-13 22:53:38.116
Context
2014-11-13
23:12
Moved mount to rev, making dirdiff support extendable to other vcs check-in: d0b469ea11 user: peter tags: trunk
22:53
Moved experiment to dirdiff src check-in: b94817f6ae user: peter tags: trunk
22:28
First experiment for version support in dirdiff. Only for fossil yet. check-in: 371bcf8341 user: peter tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to src/dirdiff.tcl.
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
                $win.m.md add checkbutton -label "Console" -variable consolestate \
                        -onvalue show -offvalue hide -command {console $consolestate}
                $win.m.md add separator
            }
            $win.m.md add command -label "Reread Source" -underline 0 \
                    -command {EskilRereadSource}
            $win.m.md add separator
            $win.m.md add command -label "Redraw Window" -command {makeDirDiffWin 1}
        }
        
        ttk::button $win.bu -image $::img(upup) -command [mymethod UpDir] \
                -underline 0
        addBalloon $win.bu "Up in both."
        bind $win <Alt-u> "$win.bu invoke"
        







|







1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
                $win.m.md add checkbutton -label "Console" -variable consolestate \
                        -onvalue show -offvalue hide -command {console $consolestate}
                $win.m.md add separator
            }
            $win.m.md add command -label "Reread Source" -underline 0 \
                    -command {EskilRereadSource}
            $win.m.md add separator
            $win.m.md add command -label "Redraw Window" -command {makeDirDiffWin}
        }
        
        ttk::button $win.bu -image $::img(upup) -command [mymethod UpDir] \
                -underline 0
        addBalloon $win.bu "Up in both."
        bind $win <Alt-u> "$win.bu invoke"
        
1227
1228
1229
1230
1231
1232
1233
1234





1235
1236
1237
1238
1239
1240






















1241
1242
1243
1244
    grid $top.l1 $top.e1 -sticky we
    grid $top.l2 $top.e2 -sticky we
    grid columnconfigure $top 1 -weight 1
    grid rowconfigure    $top 2 -weight 1
    
}

proc makeDirDiffWin {{redraw 0}} {





    if {![info exists ::dirdiff(leftDir)]} {
        set ::dirdiff(leftDir) ""
    }
    if {![info exists ::dirdiff(rightDir)]} {
        set ::dirdiff(rightDir) ""
    }






















    destroy .dirdiff
    DirDiff .dirdiff
    return .dirdiff
}







|
>
>
>
>
>






>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>




1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
    grid $top.l1 $top.e1 -sticky we
    grid $top.l2 $top.e2 -sticky we
    grid columnconfigure $top 1 -weight 1
    grid rowconfigure    $top 2 -weight 1
    
}

proc makeDirDiffWin {{optsName {}}} {
    if {$optsName ne ""} {
        upvar 1 $optsName opts
    } else {
        array set opts {}
    }
    if {![info exists ::dirdiff(leftDir)]} {
        set ::dirdiff(leftDir) ""
    }
    if {![info exists ::dirdiff(rightDir)]} {
        set ::dirdiff(rightDir) ""
    }

    # Experiment to support -r for directory diff
    # Currently only Fossil is supported
    if {[info exists opts(doptrev1)] && $opts(doptrev1) ne ""} {
        set fullname $::dirdiff(leftDir)
        if {[detectRevSystem $fullname] eq "FOSSIL"} {
            set revs [list $opts(doptrev1)]
            if {[info exists opts(doptrev2)] && $opts(doptrev2) ne ""} {
                lappend revs $opts(doptrev2)
            }
            set revs [eskil::rev::FOSSIL::ParseRevs $fullname $revs]
            set rev1 [lindex $revs 0]
            set rev2 [lindex $revs 1]
            set d1 [vcsvfs::fossil::mount $fullname $rev1]
            set ::dirdiff(leftDir) $d1
            if {$rev2 ne ""} {
                set d2 [vcsvfs::fossil::mount $fullname $rev2]
                set ::dirdiff(rightDir) $d2
            }
        }
    }

    destroy .dirdiff
    DirDiff .dirdiff
    return .dirdiff
}
Changes to src/eskil.tcl.
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305

    # Figure out if we start in a diff or dirdiff window.
    set len [llength $files]

    if {$len == 0 && $dodir} {
        set dirdiff(leftDir) [pwd]
        set dirdiff(rightDir) [pwd]
        return [makeDirDiffWin]
    }
    if {$len == 1} {
        set fullname [lindex $files 0]
        if {[FileIsDirectory $fullname 1]} {
            set dirdiff(leftDir) $fullname
            set dirdiff(rightDir) $dirdiff(leftDir)

            # Experiment to support -r for directory diff
            # Currently only Fossil is supported
            if {[info exists opts(doptrev1)] && $opts(doptrev1) ne ""} {
                if {[detectRevSystem $fullname] eq "FOSSIL"} {
                    set revs [list $opts(doptrev1)]
                    if {[info exists opts(doptrev2)] && $opts(doptrev2) ne ""} {
                        lappend revs $opts(doptrev2)
                    }
                    set revs [eskil::rev::FOSSIL::ParseRevs $fullname $revs]
                    set rev1 [lindex $revs 0]
                    set rev2 [lindex $revs 1]
                    set d1 [vcsvfs::fossil::mount $fullname $rev1]
                    set dirdiff(leftDir) $d1
                    if {$rev2 ne ""} {
                        set d2 [vcsvfs::fossil::mount $fullname $rev2]
                        set dirdiff(rightDir) $d2
                    }
                }
            }

            return [makeDirDiffWin]
        }
    } elseif {$len >= 2} {
        set fullname1 [lindex $files 0]
        set fullname2 [lindex $files 1]
        if {[FileIsDirectory $fullname1 1] && [FileIsDirectory $fullname2 1]} {
            set dirdiff(leftDir) $fullname1
            set dirdiff(rightDir) $fullname2
            return [makeDirDiffWin]
        }
    }

    # Ok, we have a normal diff
    set top [makeDiffWin]
    update
    # Copy the previously collected options







|






<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|







|







4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268





















4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284

    # Figure out if we start in a diff or dirdiff window.
    set len [llength $files]

    if {$len == 0 && $dodir} {
        set dirdiff(leftDir) [pwd]
        set dirdiff(rightDir) [pwd]
        return [makeDirDiffWin opts]
    }
    if {$len == 1} {
        set fullname [lindex $files 0]
        if {[FileIsDirectory $fullname 1]} {
            set dirdiff(leftDir) $fullname
            set dirdiff(rightDir) $dirdiff(leftDir)





















            return [makeDirDiffWin opts]
        }
    } elseif {$len >= 2} {
        set fullname1 [lindex $files 0]
        set fullname2 [lindex $files 1]
        if {[FileIsDirectory $fullname1 1] && [FileIsDirectory $fullname2 1]} {
            set dirdiff(leftDir) $fullname1
            set dirdiff(rightDir) $fullname2
            return [makeDirDiffWin opts]
        }
    }

    # Ok, we have a normal diff
    set top [makeDiffWin]
    update
    # Copy the previously collected options