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.