.d.csr.csr.l configure -text {adjust}
place .d.csr.csr -x [expr {$cur*$mul - 7}]
- manyset [char_get_definition_info $cur_0 $cur_1] contexts
- char_exactly_selctxts $contexts
+ char_exactly_selctxts [char_get_definition_contexts]
bind_key space { othercursor }
bind_leftright_q cur_$z1 0 [expr {$cols-1}]
proc char_start_define_text {} {
global cur_0 cur_1 cur_mode
if {$cur_0 == $cur_1} return
+ if {![string length [char_get_definition_context_actual]]} return
.d.csr.csr.e delete 0 end
set cur_mode text
recursor
bind .d.csr.csr.e <Key-Return> {
set strq [.d.csr.csr.e get]
if {[string length $strq]} {
- RETURN_RESULT DEFINE [list $cur_0 $cur_1 $strq]
+ RETURN_RESULT DEFINE [list $strq]
}
}
bind .d.csr.csr.e <Key-Escape> {
return $bm
}
-proc char_get_definition_info {c0 c1} {
- # => ncontexts cl cr
+proc char_get_definition_cursors {} {
+ global cur_0 cur_1
+ if {$cur_0 <= $cur_1} {
+ set cl $cur_0; set cr $cur_1
+ } else {
+ set cl $cur_1; set cr $cur_0
+ }
+ incr cr -1
+ debug "CGD CURSORS $cl $cr"
+ return [list $cl $cr]
+}
+
+proc char_get_definition_contexts {} {
global glyphsdone unk_l unk_contexts wordmap database
-
- if {$c0 > $c1} { manyset [list $c0 $c1] c1 c0 }
+
+ manyset [char_get_definition_cursors] c0 c1
if {$c0 == $unk_l} {
set ncontexts $unk_contexts
set ncontexts {}
}
}
- incr c1 -1
- set r [list $ncontexts $c0 $c1]
- debug "CDGI $r"
- return $r
+ debug "CGD CONTEXTS $ncontexts"
+ return $ncontexts
}
-proc update_database/DEFINE {c0 c1 strq} {
+proc char_get_definition_context_actual {} {
global new_context
- manyset [char_get_definition_info $c0 $c1] ncontexts c0 c1
- debug "DEFINE $c0 $c1 $new_context {$ncontexts}"
+ set ncontexts [char_get_definition_contexts]
if {[llength $ncontexts]==1} {
set c [lindex $ncontexts 0]
- } elseif {[lsearch -exact $new_context $ncontexts]>=0} {
+ } elseif {[lsearch -exact $ncontexts $new_context]>=0} {
set c $new_context
} else {
- puts stderr "Selected context is not one of the many possibilities."
- return;
+ set c {}
+ }
+ debug "CDG CONTEXT ACTUAL $c FROM NEW $new_context ALLOW $ncontexts"
+ return $c
+}
+
+proc update_database/DEFINE {strq} {
+ manyset [char_get_definition_cursors] c0 c1
+ set c [char_get_definition_context_actual]
+ if {![string length $c]} {
+ error "Selected context is not one of the many possibilities."
}
+ debug "DEFINE $strq"
set bm [dbkey $c $c0 $c1]
do_database_update $bm $strq
}