summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kyheku <kaz@kylheku.com>2020-01-29 05:30:17 -0800
committerKaz Kylheku <kaz@kylheku.com>2020-01-29 05:30:17 -0800
commit4491cf924ada98bc939e51d18ec81751cac0f5f2 (patch)
tree2e6bf956ac8e36a4eb94f1e9aa6031dacff359ca /eval.c
parent1c19f40086b23d28280334783679d00b119d8b61 (diff)
downloadtxr-4491cf924ada98bc939e51d18ec81751cac0f5f2.tar.gz
txr-4491cf924ada98bc939e51d18ec81751cac0f5f2.tar.bz2
txr-4491cf924ada98bc939e51d18ec81751cac0f5f2.zip
New function: merge-delete-package.
This is a useful function which supports the use of temporary packages over the scope of file compilation units. A file can be read under a temporary package which provides usefully customized symbol visibility consisting of an arrangement of symbols from various other packages. Then, in a single operation, thanks to this new function, that packag can be deleted and all of its local symbols (those having been newly interned over the course of the file) are transferred to some other, more permanent package. * eval.c (eval_init): merge-delete-package intrinsic registered. * lib.c (merge_delete_package): New function. * lib.h (merge_delete_package): Declared. * txr.1: Documented.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index 40e97ce9..000a541b 100644
--- a/eval.c
+++ b/eval.c
@@ -6670,6 +6670,7 @@ void eval_init(void)
reg_fun(intern(lit("make-anon-package"), system_package), func_n0(make_anon_package));
reg_fun(intern(lit("find-package"), user_package), func_n1(find_package));
reg_fun(intern(lit("delete-package"), user_package), func_n1(delete_package));
+ reg_fun(intern(lit("merge-delete-package"), user_package), func_n2o(merge_delete_package, 1));
reg_fun(intern(lit("package-alist"), user_package), func_n0(package_alist));
reg_fun(intern(lit("package-name"), user_package), func_n1(package_name));
reg_fun(intern(lit("package-symbols"), user_package), func_n1(package_symbols));