# expr.ka v1 by conio (sam@conio.net) # inline expression parser (fun). hotkey alt+e { set input [input get_text] if [input get_sel_length] { set exp [string range $input [input get_sel_start] [expr {[input get_sel_start]+[input get_sel_length]}]] if ![catch {set val [expr $exp]}] { set x [input get_sel_start] set y [input get_sel_length] input set_text [string range [input get_text] 0 [expr {$x-1}]]$val[string range [input get_text] [expr {$x+$y}] end] input set_sel_start $x input set_sel_length [string length $val] } } { set in [input get_sel_start] set split [split [string range $input 0 [expr $in-1]]] set len [expr [llength $split] -1] set spin [split $input] set exp [lindex $spin $len] set before [join [lrange $spin 0 [expr $len -1]]] set after [join [lrange $spin [expr $len +1] end]] set unexp [expr [string length $before] +1] if ![catch {expr $exp} val] { input set_text "$before $val $after" input set_sel_start $unexp } } complete } addecho "[kano] expr.ka v1 by conio (sam@conio.net) loaded (alt-e)" addname expr.ka