Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fixed handling of ignore keyword in dir diff. Added 95 chars/line option in print. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ba845025f082d159139ee0830e06d75e |
User & Date: | peter 2005-01-27 22:44:49.000 |
Context
2005-01-27
| ||
22:47 | Added more instrumenting. check-in: 825845a743 user: peter tags: trunk | |
22:44 | Fixed handling of ignore keyword in dir diff. Added 95 chars/line option in print. check-in: ba845025f0 user: peter tags: trunk | |
22:41 | New tests for compareFiles. check-in: fa8652fa59 user: peter tags: trunk | |
Changes
Changes to src/eskil.tcl.
1 2 3 4 5 | #!/bin/sh #---------------------------------------------------------------------- # # Eskil, a Graphical frontend to diff # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/bin/sh #---------------------------------------------------------------------- # # Eskil, a Graphical frontend to diff # # Copyright (c) 1998-2005, Peter Spjuth (peter.spjuth@space.se) # # Usage # Do 'eskil.tcl' for interactive mode # Do 'eskil.tcl --help' for command line usage # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by |
︙ | ︙ | |||
48 49 50 51 52 53 54 | # Add a dummy if it does not exist. proc addBalloon {args} {} } else { namespace import -force psballoon::addBalloon } set debug 0 | | | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # 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.7+ 2005-01-27" 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] |
︙ | ︙ | |||
2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 | } ##################################### # Printing stuff ##################################### # Format a line number for printing proc formatLineno {lineno gray} { if {[string is integer -strict $lineno]} { set res [format "%3d: " $lineno] } else { set res [format "%-5s" $lineno] set gray 0.9 } | > | 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 | } ##################################### # Printing stuff ##################################### # Format a line number for printing # It will always be 5 chars wide. proc formatLineno {lineno gray} { if {[string is integer -strict $lineno]} { set res [format "%3d: " $lineno] } else { set res [format "%-5s" $lineno] set gray 0.9 } |
︙ | ︙ | |||
2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 | } } } return $lines } # Handle wrapping of a too long line for printing proc lineWrap {gray} { if {$gray eq "1.0"} { return "\n " } else { return "\0bggray\{1.0\}\n \0bggray\{$gray\}" } } | > | 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 | } } } return $lines } # Handle wrapping of a too long line for printing # The indentation of the wrapped line is 5 chars, same as a line number. proc lineWrap {gray} { if {$gray eq "1.0"} { return "\n " } else { return "\0bggray\{1.0\}\n \0bggray\{$gray\}" } } |
︙ | ︙ | |||
2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 | set tmpFile2 [file nativename $::diff($top,printFile)] } else { set tmpFile2 [file nativename ~/eskil.ps] } set lines1 {} set lines2 {} set tdump1 [$::widgets($top,wDiff1) dump -tag -text 1.0 end] set tdump2 [$::widgets($top,wDiff2) dump -tag -text 1.0 end] set lineNo1 [processLineno $::widgets($top,wLine1)] set lineNo2 [processLineno $::widgets($top,wLine2)] foreach tdump [list $tdump1 $tdump2] \ | > > > > > > > | 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 | set tmpFile2 [file nativename $::diff($top,printFile)] } else { set tmpFile2 [file nativename ~/eskil.ps] } set lines1 {} set lines2 {} if {$::wideLines} { set wraplength 100 set linesPerPage 74 } else { set wraplength 85 set linesPerPage 66 } set tdump1 [$::widgets($top,wDiff1) dump -tag -text 1.0 end] set tdump2 [$::widgets($top,wDiff2) dump -tag -text 1.0 end] set lineNo1 [processLineno $::widgets($top,wLine1)] set lineNo2 [processLineno $::widgets($top,wLine2)] foreach tdump [list $tdump1 $tdump2] \ |
︙ | ︙ | |||
2681 2682 2683 2684 2685 2686 2687 | text { set value [fixTextBlock $value $index] if {[string index $value end] eq "\n"} { set newline 1 set value [string trimright $value "\n"] } set len [string length $value] | | | | 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 | text { set value [fixTextBlock $value $index] if {[string index $value end] eq "\n"} { set newline 1 set value [string trimright $value "\n"] } set len [string length $value] while {$chars + $len > $wraplength} { set wrap [expr {$wraplength - $chars}] set val1 [string range $value 0 [expr {$wrap - 1}]] set value [string range $value $wrap end] append line $val1 append line [lineWrap $gray] set chars 5 incr wrapc set len [string length $value] |
︙ | ︙ | |||
2751 2752 2753 2754 2755 2756 2757 | set len1 [llength $wraplines1] set len2 [llength $wraplines2] set i1 0 set i2 0 while {$i1 < $len1 && $i2 < $len2} { | | | | | | > > > | 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 | set len1 [llength $wraplines1] set len2 [llength $wraplines2] set i1 0 set i2 0 while {$i1 < $len1 && $i2 < $len2} { for {set i 0} {$i < $linesPerPage && $i1 < $len1} {incr i ; incr i1} { puts $ch [lindex $wraplines1 $i1] } if {$i < $linesPerPage} {puts -nonewline $ch "\f"} for {set i 0} {$i < $linesPerPage && $i2 < $len2} {incr i ; incr i2} { puts $ch [lindex $wraplines2 $i2] } if {$i < $linesPerPage} {puts -nonewline $ch "\f"} } close $ch if {$::tcl_platform(platform) eq "windows" &&\ ![info exists ::env(ENSCRIPT_LIBRARY)]} { set ::env(ENSCRIPT_LIBRARY) [pwd] } set enscriptCmd [list enscript -2jcre -L $linesPerPage -M A4] if {$::wideLines} { lappend enscriptCmd -f Courier6 } if {![regexp {^(.*)( \(.*?\))$} $::diff($top,leftLabel) -> lfile lrest]} { set lfile $::diff($top,leftLabel) set lrest "" } set lfile [file tail $lfile]$lrest if {![regexp {^(.*)( \(.*?\))$} $::diff($top,rightLabel) -> rfile rrest]} { set rfile $::diff($top,rightLabel) |
︙ | ︙ | |||
2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 | } # Create a print dialog. proc doPrint {top {quiet 0}} { if {![info exists ::grayLevel1]} { set ::grayLevel1 0.6 set ::grayLevel2 0.8 } if {$quiet} { printDiffs $top 1 return } destroy .pr | > | 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 | } # Create a print dialog. proc doPrint {top {quiet 0}} { if {![info exists ::grayLevel1]} { set ::grayLevel1 0.6 set ::grayLevel2 0.8 set ::wideLines 0 } if {$quiet} { printDiffs $top 1 return } destroy .pr |
︙ | ︙ | |||
2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 | -to 1.0 -variable grayLevel2 frame .pr.f radiobutton .pr.r1 -text "No Syntax" -variable prettyPrint -value "" radiobutton .pr.r2 -text "VHDL" -variable prettyPrint -value "vhdl" radiobutton .pr.r3 -text "Tcl" -variable prettyPrint -value "tcl" radiobutton .pr.r4 -text "C" -variable prettyPrint -value "c" button .pr.b1 -text "Print to File" -padx 5\ -command "destroy .pr; update; printDiffs $top" button .pr.b2 -text "Cancel" -padx 5 \ -command {destroy .pr} grid .pr.l1 - - -sticky we grid .pr.l2 - - -sticky we grid .pr.s1 - - -sticky we grid .pr.s2 - - -sticky we grid .pr.f - - -sticky we grid .pr.b1 x .pr.b2 -sticky we -padx 5 -pady 5 grid columnconfigure .pr {0 2} -uniform a grid columnconfigure .pr 1 -weight 1 pack .pr.r1 .pr.r2 .pr.r3 .pr.r4 -in .pr.f -side left -fill x -expand 1 } | > > > > > > | 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 | -to 1.0 -variable grayLevel2 frame .pr.f radiobutton .pr.r1 -text "No Syntax" -variable prettyPrint -value "" radiobutton .pr.r2 -text "VHDL" -variable prettyPrint -value "vhdl" radiobutton .pr.r3 -text "Tcl" -variable prettyPrint -value "tcl" radiobutton .pr.r4 -text "C" -variable prettyPrint -value "c" frame .pr.fs radiobutton .pr.fs.r1 -text "80 char" -variable wideLines -value 0 radiobutton .pr.fs.r2 -text "95 char" -variable wideLines -value 1 pack .pr.fs.r1 .pr.fs.r2 -side left -padx 10 button .pr.b1 -text "Print to File" -padx 5\ -command "destroy .pr; update; printDiffs $top" button .pr.b2 -text "Cancel" -padx 5 \ -command {destroy .pr} grid .pr.l1 - - -sticky we grid .pr.l2 - - -sticky we grid .pr.s1 - - -sticky we grid .pr.s2 - - -sticky we grid .pr.f - - -sticky we grid .pr.fs - - -sticky we grid .pr.b1 x .pr.b2 -sticky we -padx 5 -pady 5 grid columnconfigure .pr {0 2} -uniform a grid columnconfigure .pr 1 -weight 1 pack .pr.r1 .pr.r2 .pr.r3 .pr.r4 -in .pr.f -side left -fill x -expand 1 } |
︙ | ︙ | |||
4269 4270 4271 4272 4273 4274 4275 | set eq 1 set ch1 [open $file1 r] set ch2 [open $file2 r] if {$Pref(comparelevel) eq "1b"} { fconfigure $ch1 -translation binary fconfigure $ch2 -translation binary } | | > < | | > > > > > > > > > | > > > | | 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 | set eq 1 set ch1 [open $file1 r] set ch2 [open $file2 r] if {$Pref(comparelevel) eq "1b"} { fconfigure $ch1 -translation binary fconfigure $ch2 -translation binary } if {$ignorekey} { # Assume that all keywords are in the first block set f1 [read $ch1 $bufsz] set f2 [read $ch2 $bufsz] regsub -all {\$\w+:[^\$]*\$} $f1 {} f1 regsub -all {\$\w+:[^\$]*\$} $f2 {} f2 # Compensate for any change in length if {[string length $f1] < [string length $f2]} { append f1 [read $ch1 [expr {[string length $f2] - [string length $f1]}]] } if {[string length $f2] < [string length $f1]} { append f2 [read $ch2 [expr {[string length $f1] - [string length $f2]}]] } if {![string equal $f1 $f2]} { set eq 0 } } while {$eq && ![eof $ch1] && ![eof $ch2]} { set f1 [read $ch1 $bufsz] set f2 [read $ch2 $bufsz] if {![string equal $f1 $f2]} { set eq 0 } } if {![eof $ch1] || ![eof $ch2]} { set eq 0 } close $ch1 close $ch2 } 2 { # Simple external diff set eq [expr {![catch {exec $::util(diffexe) $file1 $file2}]}] |
︙ | ︙ |