From faf160ff1a6fdccce8aa6d9007dc4d7903e3ee74 Mon Sep 17 00:00:00 2001 From: Brian Templeton Date: Wed, 30 Jun 2010 16:48:19 -0400 Subject: [PATCH] allow fluid macro bindings * module/language/elisp/compile-tree-il.scm (define-macro!, get-macro): Allow fluid macro bindings. --- module/language/elisp/compile-tree-il.scm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/module/language/elisp/compile-tree-il.scm b/module/language/elisp/compile-tree-il.scm index 479603023..65f431aa2 100644 --- a/module/language/elisp/compile-tree-il.scm +++ b/module/language/elisp/compile-tree-il.scm @@ -544,7 +544,8 @@ (and (symbol? sym) (module-defined? (resolve-interface function-slot) sym) - (let ((macro (module-ref (resolve-module function-slot) sym))) + (let* ((macro (module-ref (resolve-module function-slot) sym)) + (macro (if (fluid? macro) (fluid-ref macro) macro))) (and (pair? macro) (eq? (car macro) 'macro))))) (define (define-macro! loc sym definition) @@ -555,7 +556,8 @@ (define (get-macro sym) (and (is-macro? sym) - (cdr (module-ref (resolve-module function-slot) sym)))) + (let ((macro (module-ref (resolve-module function-slot) sym))) + (cdr (if (fluid? macro) (fluid-ref macro) macro))))) ;;; See if a (backquoted) expression contains any unquotes.