87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
+
-
-
|
set result {}
for {set t 1} {[info exists ::eskil($top,prefregexp$t)]} {incr t} {
set RE $::eskil($top,prefregexp$t)
set Sub $::eskil($top,prefregsub$t)
set l $::eskil($top,prefregleft$t)
set r $::eskil($top,prefregright$t)
if {$RE eq ""} continue
switch $::eskil($top,prefregtype$t) {
Subst {
lappend result $RE $Sub Subst
}
Prefix {
lappend result $RE "" Prefix
}
default {
set side ""
if {$l && !$r} { set side left }
if {!$l && $r} { set side right }
if {!$l && !$r} { continue }
if {$RE eq ""} continue
if {[catch {regsub -all -- $RE $exa $Sub _} err]} {
return
}
lappend result $RE $Sub $side
}
}
}
|
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
|
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
|
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
+
|
set ::eskil($top,prefregright$t) 1
}
# Override type if given
if {$type ne ""} {
set ::eskil($top,prefregtype$t) $type
}
# TBD Subst and Prefix types GUIs
set w [ttk::frame $parent.fr$t -borderwidth 2 -relief groove -padding 3]
pack $w -side "top" -fill x -padx 3 -pady 3
switch $::eskil($top,prefregtype$t) {
Subst {
ttk::label $w.l1 -text "Left:" -anchor "w"
ttk::entryX $w.e1 -textvariable ::eskil($top,prefregexp$t) -width 20
ttk::label $w.l2 -text "Right:" -anchor "w"
ttk::entryX $w.e2 -textvariable ::eskil($top,prefregsub$t)
grid $w.l1 $w.e1 $w.l2 $w.e2 -sticky we -padx 3 -pady 3
grid columnconfigure $w {0 2} -uniform a
grid columnconfigure $w {1 3} -weight 1 -uniform b
set w [ttk::frame $parent.fr$t -borderwidth 2 -relief groove -padding 3]
ttk::label $w.l1 -text "Regexp:" -anchor "w"
ttk::entryX $w.e1 -textvariable ::eskil($top,prefregexp$t) -width 60
ttk::label $w.l2 -text "Subst:" -anchor "w"
ttk::entryX $w.e2 -textvariable ::eskil($top,prefregsub$t)
ttk::checkbutton $w.cb1 -text "Left" -variable ::eskil($top,prefregleft$t)
ttk::checkbutton $w.cb2 -text "Right" -variable ::eskil($top,prefregright$t)
addBalloon $w.cb1 "Apply to left file"
addBalloon $w.cb2 "Apply to right file"
addBalloon $w.l1 -fmt {
Each pattern is applied to its side and substituted
for a common unique string.
}
}
Prefix {
ttk::label $w.l1 -text "Prefix:" -anchor "w"
ttk::entryX $w.e1 -textvariable ::eskil($top,prefregexp$t) -width 20
grid $w.l1 $w.e1 -sticky we -padx 3 -pady 3
grid columnconfigure $w 1 -weight 1
addBalloon $w.l1 -fmt {
Only one word that start with prefix is valid for line
comparison.
}
}
default {
ttk::label $w.l1 -text "Regexp:" -anchor "w"
ttk::entryX $w.e1 -textvariable ::eskil($top,prefregexp$t) -width 60
ttk::label $w.l2 -text "Subst:" -anchor "w"
ttk::entryX $w.e2 -textvariable ::eskil($top,prefregsub$t)
ttk::checkbutton $w.cb1 -text "Left" -variable ::eskil($top,prefregleft$t)
ttk::checkbutton $w.cb2 -text "Right" -variable ::eskil($top,prefregright$t)
addBalloon $w.cb1 "Apply to left file"
addBalloon $w.cb2 "Apply to right file"
grid $w.l1 $w.e1 $w.cb1 -sticky we -padx 3 -pady 3
grid $w.l2 $w.e2 $w.cb2 -sticky we -padx 3 -pady 3
grid columnconfigure $w 1 -weight 1
grid $w.l1 $w.e1 $w.cb1 -sticky we -padx 3 -pady 3
grid $w.l2 $w.e2 $w.cb2 -sticky we -padx 3 -pady 3
grid columnconfigure $w 1 -weight 1
}
pack $w -side "top" -fill x -padx 3 -pady 3
}
trace add variable ::eskil($top,prefregexp$t) write \
[list EditPrefRegsubUpdate $top]
trace add variable ::eskil($top,prefregsub$t) write \
[list EditPrefRegsubUpdate $top]
trace add variable ::eskil($top,prefregleft$t) write \
[list EditPrefRegsubUpdate $top]
|