aboutsummaryrefslogtreecommitdiff
path: root/stdlib.tcl
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2017-08-28 10:03:21 +1000
committerSteve Bennett <steveb@workware.net.au>2017-09-15 19:17:48 +1000
commiteb1918117c0ae5f2b67d441f2ed459718e79cad4 (patch)
tree593d49627e6c26a7158ac32c8a819415cd3ddf91 /stdlib.tcl
parenta5877cb1c624597f340fe5268c2ff8e61f6de4b0 (diff)
downloadjimtcl-eb1918117c0ae5f2b67d441f2ed459718e79cad4.zip
jimtcl-eb1918117c0ae5f2b67d441f2ed459718e79cad4.tar.gz
jimtcl-eb1918117c0ae5f2b67d441f2ed459718e79cad4.tar.bz2
Implement defer, $jim::defer
Allows commands to run when a proc or interpreter exits. If the $jim::defer variables exists at proc or interp exit, it is treated as a list of scripts to evaluate (in reverse order). The [defer] command is a helper to add scripts to $jim::defer See tests/defer.test Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'stdlib.tcl')
-rw-r--r--stdlib.tcl7
1 files changed, 7 insertions, 0 deletions
diff --git a/stdlib.tcl b/stdlib.tcl
index 7fd1313..37a8007 100644
--- a/stdlib.tcl
+++ b/stdlib.tcl
@@ -66,6 +66,13 @@ proc stackdump {stacktrace} {
join $lines \n
}
+# Add the given script to $jim::defer, to be evaluated when the current
+# procedure exits
+proc defer {script} {
+ upvar jim::defer v
+ lappend v $script
+}
+
# Sort of replacement for $::errorInfo
# Usage: errorInfo error ?stacktrace?
proc errorInfo {msg {stacktrace ""}} {