summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eval.c1
-rw-r--r--txr.118
2 files changed, 19 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index c3ceede9..9e2b73e1 100644
--- a/eval.c
+++ b/eval.c
@@ -5036,6 +5036,7 @@ void eval_init(void)
reg_fun(intern(lit("source-loc"), user_package), func_n1(source_loc));
reg_fun(intern(lit("source-loc-str"), user_package), func_n2o(source_loc_str, 1));
+ reg_fun(intern(lit("macro-ancestor"), user_package), func_n1(lookup_origin));
reg_fun(intern(lit("rlcp"), user_package), func_n2(rlcp));
eval_error_s = intern(lit("eval-error"), user_package);
diff --git a/txr.1 b/txr.1
index e130c6cb..aa281265 100644
--- a/txr.1
+++ b/txr.1
@@ -36801,6 +36801,24 @@ source code location info also, so that when the \*(TL evaluator
encounters errors in transformed code, it can give diagnostics which refer
to the original untransformed source code.
+.coNP Function @ macro-ancestor
+.synb
+.mets (macro-ancestor << form )
+.syne
+.desc
+The
+.code macro-ancestor
+function returns information about the macro-expansion ancestor of
+.metn form .
+The ancestor is the original form whose expansion produced
+.metn form .
+
+If
+.meta form
+is not the result of macro-expansion, or the ancestor information
+is unavailable, the function returns
+.codn nil .
+
.SS* Profiling
.coNP Operator @ prof
.synb