Eskil

Diff
Login

Differences From Artifact [e9333d4675]:

To Artifact [007fdbe62b]:


151
152
153
154
155
156
157
158
159
160
161
162
163
164
165


166
167
168
169
170


171
172
173


174
175
176
177





178
179
180


181
182


183
184
185
186
187
188
189
151
152
153
154
155
156
157

158
159
160
161
162
163
164
165
166
167
168



169
170


171
172
173




174
175
176
177
178



179
180
181
182
183
184
185
186
187
188
189
190
191







-







+
+


-
-
-
+
+
-
-

+
+
-
-
-
-
+
+
+
+
+
-
-
-
+
+


+
+







    foreach {plugin info} $plugins {
        set descr [dict get $info descr]
        puts "Plugin \"$plugin\" : $descr"
    }
}

proc preparePlugin {top} {
    #FIXA: plugin miffo
    disallowEdit $top
    $::eskil($top,plugin) eval [list array set ::Pref [array get ::Pref]]
    set out1 [tmpFile]
    set out2 [tmpFile]

    set chi [open $::eskil($top,leftFile) r]
    set cho [open $out1 w]
    set chi2 [open $::eskil($top,rightFile) r]
    set cho2 [open $out2 w]
    interp share {} $chi $::eskil($top,plugin)
    interp share {} $cho $::eskil($top,plugin)
    set usenew1 [$::eskil($top,plugin) eval [list PreProcess left $chi $cho]]
    $::eskil($top,plugin) invokehidden close $chi
    $::eskil($top,plugin) invokehidden close $cho
    interp share {} $chi2 $::eskil($top,plugin)
    interp share {} $cho2 $::eskil($top,plugin)
    close $chi
    close $cho

    # TODO: When allowing 8.6, do this in coroutines allowing each call
    # to yield and to alternate between them until done
    set chi [open $::eskil($top,rightFile) r]
    set cho [open $out2 w]
    interp share {} $chi $::eskil($top,plugin)
    interp share {} $cho $::eskil($top,plugin)
    set usenew1 [$::eskil($top,plugin) eval [list PreProcess left $chi $cho]]
    set usenew2 [$::eskil($top,plugin) eval [list PreProcess right $chi2 $cho2]]

    $::eskil($top,plugin) invokehidden close $chi
    $::eskil($top,plugin) invokehidden close $cho
    set usenew2 [$::eskil($top,plugin) eval [list PreProcess right $chi $cho]]
    $::eskil($top,plugin) invokehidden close $chi
    $::eskil($top,plugin) invokehidden close $cho
    $::eskil($top,plugin) invokehidden close $chi2
    $::eskil($top,plugin) invokehidden close $cho2
    close $chi
    close $cho
    close $chi2
    close $cho2

    if {$usenew1} {
        # The file after processing should be used both
        # for comparison and for displaying.
        set ::eskil($top,leftFileBak) $::eskil($top,leftFile)
        set ::eskil($top,leftFile) $out1
    } else {
266
267
268
269
270
271
272
273


274
275

276
277
278
279
280
281
282
268
269
270
271
272
273
274

275
276
277
278
279
280
281
282
283
284
285
286







-
+
+


+







}

proc EditPrefPluginsOk {top w} {
    destroy $w
    set ::eskil($top,pluginname) $::eskil($top,edit,pluginname) 
    set ::eskil($top,plugininfo) $::eskil($top,edit,plugininfo)
    if {$::eskil($top,pluginname) ne ""} {
        set pinterp [createPluginInterp $::eskil($top,pluginname) $::eskil($top,plugininfo) pinfo]
        set pinterp [createPluginInterp $::eskil($top,pluginname) \
                             $::eskil($top,plugininfo) pinfo]
    } else {
        set pinterp ""
        set pinfo ""
    }
    set ::eskil($top,plugin) $pinterp
    set ::eskil($top,pluginpinfo) $pinfo
}

# Put Tcl code in a text widget, with some syntax highlighting
proc TextViewTcl {t data} {