diff options
author | Kaz Kyheku <kaz@kylheku.com> | 2020-01-29 05:30:17 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-01-29 05:30:17 -0800 |
commit | 4491cf924ada98bc939e51d18ec81751cac0f5f2 (patch) | |
tree | 2e6bf956ac8e36a4eb94f1e9aa6031dacff359ca /eval.c | |
parent | 1c19f40086b23d28280334783679d00b119d8b61 (diff) | |
download | txr-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.c | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -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)); |