Eskil

Check-in [26440fd465]
Login

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

Overview
Comment:Added Paste Patch command.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 26440fd4659ec4e55f43c175806aa5126e9b9496
User & Date: peter.spjuth@gmail.com 2011-04-05 20:35:05.000
Context
2011-04-05
20:58
Corrected email and link. check-in: 5f414288a3 user: peter.spjuth@gmail.com tags: trunk
20:35
Added Paste Patch command. check-in: 26440fd465 user: peter.spjuth@gmail.com tags: trunk
20:07
Bring documentation up to speed with previous changes. check-in: fe0a9b416f user: peter.spjuth@gmail.com tags: trunk
Changes
Unified Diff Ignore Whitespace Patch
Changes to Changes.
1
2

3
4
5
6
7
8
9
2011-04-05
 Added -pluginlist option.


2011-04-04
 Support list of files with -review.
 Support commit from -review.
 Support commit in Git and Fossil.

Release 2.5


>







1
2
3
4
5
6
7
8
9
10
2011-04-05
 Added -pluginlist option.
 Added Paste Patch command in Tools.

2011-04-04
 Support list of files with -review.
 Support commit from -review.
 Support commit in Git and Fossil.

Release 2.5
Changes to doc/eskil.txt.
12
13
14
15
16
17
18

19
20
21
22
23
24
25
26
27
28
29
30
31
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
  Print PDF       \t: Print diff to PDF file.
  Close           \t: Close this window.
  Quit            \t: Guess

<b>Options Menu</b>
  Font   \t: Select font and fontsize for the two main text windows
  Ignore \t: Diff options for ignoring e.g. whitespace

  Parse  \t: Additional parsing made by Eskil to improve the display.
         \t  See examples below.
         \t  Nothing: No parsing made.
         \t  Lines  : When there is a changed block with the same number
         \t           of lines in both right and left files, Eskil
         \t           compares corresponding lines and tries to highlight
         \t           only the part that has been changed.
         \t  Blocks : When the number of lines in a changed block is not
         \t           the same in both files, Eskil tries to find lines
         \t           that look the same and place them abreast. The "small"
         \t           version do not parse big blocks to avoid long runs.
         \t  The Char and Word options selects if the line parsing should
         \t  highlight full words only, or check single characters.
         \t  Mark last  : Last change of a line is underlined
  Colours\t: Choose highlight colours.
  Context\t: You can select that only differing lines shall be displayed,
         \t  and how many surrounding lines are shown.

  Save default\t: Save current option settings in ~/.eskilrc

<b>Search Menu</b>
  Find      \t: Search dialog
  Find next \t: Repeat search
  Find prev \t: Repeat search backwards

<b>Tools Menu</b>
  New Diff Window \t : Open another diff window.
  Directory Diff  \t : Window for comparing directories
  Clip Diff       \t : Gives two areas where you can paste text and diff them.
  Merge           \t : Perform a two way merge.
  Edit Mode       \t : (new edit mode, to be described)

  Clear Align     \t : Clear alignment info for this diff.  The effect does not
                  \t   show until you do "Redo Diff".

Diff Options Field\t: Any text written here will be passed to diff.
Rev 1/2 Fields    \t: In Revision mode, these field are selects versions to be
                  \t  compared.



Prev Diff Button\t: Scrolls to the previous differing block, or to the top
                \t  if there are no more diffs.
Next Diff Button\t: Scrolls to the next differing block, or to the bottom
                \t  if there are no more diffs.

Equal sign\t: Above the vertical scrollbar, a "=" will appear if the files
          \t  are equal. While the external diff executes a "*" is shown







>

















>













>



<



>
>







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
  Print PDF       \t: Print diff to PDF file.
  Close           \t: Close this window.
  Quit            \t: Guess

<b>Options Menu</b>
  Font   \t: Select font and fontsize for the two main text windows
  Ignore \t: Diff options for ignoring e.g. whitespace
  Preprocess\t: Options for making string substitution before comparing.
  Parse  \t: Additional parsing made by Eskil to improve the display.
         \t  See examples below.
         \t  Nothing: No parsing made.
         \t  Lines  : When there is a changed block with the same number
         \t           of lines in both right and left files, Eskil
         \t           compares corresponding lines and tries to highlight
         \t           only the part that has been changed.
         \t  Blocks : When the number of lines in a changed block is not
         \t           the same in both files, Eskil tries to find lines
         \t           that look the same and place them abreast. The "small"
         \t           version do not parse big blocks to avoid long runs.
         \t  The Char and Word options selects if the line parsing should
         \t  highlight full words only, or check single characters.
         \t  Mark last  : Last change of a line is underlined
  Colours\t: Choose highlight colours.
  Context\t: You can select that only differing lines shall be displayed,
         \t  and how many surrounding lines are shown.
  Toolbar\t: Show/hide toolbar
  Save default\t: Save current option settings in ~/.eskilrc

<b>Search Menu</b>
  Find      \t: Search dialog
  Find next \t: Repeat search
  Find prev \t: Repeat search backwards

<b>Tools Menu</b>
  New Diff Window \t : Open another diff window.
  Directory Diff  \t : Window for comparing directories
  Clip Diff       \t : Gives two areas where you can paste text and diff them.
  Merge           \t : Perform a two way merge.
  Edit Mode       \t : (new edit mode, to be described)
  Paste Patch     \t : Display a patch from clipboard.
  Clear Align     \t : Clear alignment info for this diff.  The effect does not
                  \t   show until you do "Redo Diff".


Rev 1/2 Fields    \t: In Revision mode, these field are selects versions to be
                  \t  compared.

Log Button      \t: Show revision control log between shown files.
Commit Button   \t: Commit shown differences to version control.
Prev Diff Button\t: Scrolls to the previous differing block, or to the top
                \t  if there are no more diffs.
Next Diff Button\t: Scrolls to the next differing block, or to the bottom
                \t  if there are no more diffs.

Equal sign\t: Above the vertical scrollbar, a "=" will appear if the files
          \t  are equal. While the external diff executes a "*" is shown
Changes to src/eskil.tcl.
930
931
932
933
934
935
936

937



938
939
940
941
942
943
944
    global Pref

    set ::diff($top,leftLabel) "Patch $::diff($top,patchFile): old"
    set ::diff($top,rightLabel) "Patch $::diff($top,patchFile): new"
    update idletasks

    if {$::diff($top,patchFile) eq ""} {

        set data [getFullPatch $top]



    } elseif {$::diff($top,patchFile) eq "-"} {
        set data [read stdin]
    } else {
        set ch [open $::diff($top,patchFile) r]
        set data [read $ch]
        close $ch
    }







>
|
>
>
>







930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
    global Pref

    set ::diff($top,leftLabel) "Patch $::diff($top,patchFile): old"
    set ::diff($top,rightLabel) "Patch $::diff($top,patchFile): new"
    update idletasks

    if {$::diff($top,patchFile) eq ""} {
        if {$::diff($top,patchData) eq ""} {
            set data [getFullPatch $top]
        } else {
            set data $::diff($top,patchData)
        }
    } elseif {$::diff($top,patchFile) eq "-"} {
        set data [read stdin]
    } else {
        set ch [open $::diff($top,patchFile) r]
        set data [read $ch]
        close $ch
    }
1949
1950
1951
1952
1953
1954
1955

1956
1957
1958
















1959
1960
1961
1962
1963
1964
1965
    global Pref
    if {[doOpenLeft $top]} {
        set ::diff($top,mode) "patch"
        set Pref(ignore) " "
        set Pref(nocase) 0
        set Pref(noempty) 0 
        set ::diff($top,patchFile) $::diff($top,leftFile)

        doDiff $top
    }
}

















proc openRev {top} {
    if {[doOpenRight $top]} {
        set rev [detectRevSystem $::diff($top,rightFile)]
        if {$rev eq ""} {
            tk_messageBox -icon error -title "Eskil Error" -message \
                    "Could not figure out which revison control system\







>



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







1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
    global Pref
    if {[doOpenLeft $top]} {
        set ::diff($top,mode) "patch"
        set Pref(ignore) " "
        set Pref(nocase) 0
        set Pref(noempty) 0 
        set ::diff($top,patchFile) $::diff($top,leftFile)
        set ::diff($top,patchData) ""
        doDiff $top
    }
}

# Get data from clipboard and display as a patch.
proc doPastePatch {top} {
    if {[catch {::tk::GetSelection $top CLIPBOARD} sel]} {
        tk_messageBox -icon error -title "Eskil Error" -parent $top \
                -message "Could not retreive clipboard" -type ok
        return
    }
    set ::diff($top,mode) "patch"
    set ::Pref(ignore) " "
    set ::Pref(nocase) 0
    set ::Pref(noempty) 0 
    set ::diff($top,patchFile) ""
    set ::diff($top,patchData) $sel
    doDiff $top
}

proc openRev {top} {
    if {[doOpenRight $top]} {
        set rev [detectRevSystem $::diff($top,rightFile)]
        if {$rev eq ""} {
            tk_messageBox -icon error -title "Eskil Error" -message \
                    "Could not figure out which revison control system\
2697
2698
2699
2700
2701
2702
2703


2704
2705
2706
2707
2708
2709
2710
            -command makeDirDiffWin
    $top.m.mt add command -label "Clip Diff" -underline 0 \
            -command makeClipDiffWin
    $top.m.mt add command -label "Merge" -underline 0 \
            -command [list makeMergeWin $top] -state disabled
    $top.m.mt add command -label "Edit Mode" -underline 0 \
            -command [list allowEdit $top] -state disabled


    $top.m.mt add command -label "Clear Align" \
            -command [list clearAlign $top] -state disabled
    set ::widgets($top,enableAlignCmd) [list \
            $top.m.mt entryconfigure "Clear Align" -state normal]
    set ::widgets($top,disableAlignCmd) [list \
            $top.m.mt entryconfigure "Clear Align" -state disabled]








>
>







2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
            -command makeDirDiffWin
    $top.m.mt add command -label "Clip Diff" -underline 0 \
            -command makeClipDiffWin
    $top.m.mt add command -label "Merge" -underline 0 \
            -command [list makeMergeWin $top] -state disabled
    $top.m.mt add command -label "Edit Mode" -underline 0 \
            -command [list allowEdit $top] -state disabled
    $top.m.mt add command -label "Paste Patch" -underline 0 \
            -command [list doPastePatch $top]
    $top.m.mt add command -label "Clear Align" \
            -command [list clearAlign $top] -state disabled
    set ::widgets($top,enableAlignCmd) [list \
            $top.m.mt entryconfigure "Clear Align" -state normal]
    set ::widgets($top,disableAlignCmd) [list \
            $top.m.mt entryconfigure "Clear Align" -state disabled]

3743
3744
3745
3746
3747
3748
3749

3750
3751
3752
3753
3754
3755
3756
    $::widgets($top,rev2) xview end

    if {$doreview} {
        set rev [detectRevSystem "" $preferedRev]
        set ::diff($top,modetype) $rev
        set ::diff($top,mode) "patch"
        set ::diff($top,patchFile) ""

        set ::diff($top,reviewFiles) $files
        set ::Pref(toolbar) 1
        after idle [list doDiff $top]
        return $top
    }
    if {$len == 1 || $foreach} {
        set ReturnAfterLoop 0







>







3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
    $::widgets($top,rev2) xview end

    if {$doreview} {
        set rev [detectRevSystem "" $preferedRev]
        set ::diff($top,modetype) $rev
        set ::diff($top,mode) "patch"
        set ::diff($top,patchFile) ""
        set ::diff($top,patchData) ""
        set ::diff($top,reviewFiles) $files
        set ::Pref(toolbar) 1
        after idle [list doDiff $top]
        return $top
    }
    if {$len == 1 || $foreach} {
        set ReturnAfterLoop 0
3798
3799
3800
3801
3802
3803
3804

3805
3806
3807
3808
3809
3810
3811
            set ::diff($top,leftLabel) $fullname
            set ::diff($top,leftOK) 1
            if {$dopatch                                 || \
                    [regexp {\.(diff|patch)$} $fullname] || \
                    $fullname eq "-"} {
                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







>







3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
            set ::diff($top,leftLabel) $fullname
            set ::diff($top,leftOK) 1
            if {$dopatch                                 || \
                    [regexp {\.(diff|patch)$} $fullname] || \
                    $fullname eq "-"} {
                set ::diff($top,mode) "patch"
                set ::diff($top,patchFile) $fullname
                set ::diff($top,patchData) ""
                set autobrowse 0
                if {$noautodiff} {
                    enableRedo $top
                } else {
                    after idle [list doDiff $top]
                }
                set ReturnAfterLoop 1