Posted to tcl by mr_calvin at Wed Dec 19 12:08:32 GMT 2018view pretty

set tracePrefix {apply {{args} {
    interp hide {} set
    proc set {args} {}; # NOOP
    trace add execution set leave {apply {{args} {
	rename set ""
	interp expose {} set
    }}}
}}}

trace add execution set enter $tracePrefix

set x 1

puts [info vars x]

trace remove execution set enter $tracePrefix

set x 2

puts [info vars x]

Comments

Posted by sebres at Wed Dec 19 12:26:35 GMT 2018 [text] [code]

proc test {} { proc cmd {args} {puts " !! exec-cmd: $args"} set tracePrefix {apply {{args} { puts " ** trace -- $args **" if {[lindex $args 0 1] eq "--avoid-exec"} { interp hide {} cmd proc cmd {args} {}; # NOOP trace add execution cmd leave {apply {{args} { rename cmd "" interp expose {} cmd }}} } }}} trace add execution cmd enter $tracePrefix puts "1)"; cmd test1; puts ok1 puts "2)"; cmd --avoid-exec test2-no-exec; puts ok2 puts "3)"; cmd test3; puts ok3 puts "4)"; cmd --avoid-exec test4-no-exec; puts ok4 trace remove execution cmd enter $tracePrefix puts "5)"; cmd test5-no-trace; puts ok5 }; test