summary refs log tree commit diff
path: root/src/guile
diff options
context:
space:
mode:
Diffstat (limited to 'src/guile')
-rw-r--r--src/guile/skribilo/evaluator.scm28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/guile/skribilo/evaluator.scm b/src/guile/skribilo/evaluator.scm
index a397f29..5067b59 100644
--- a/src/guile/skribilo/evaluator.scm
+++ b/src/guile/skribilo/evaluator.scm
@@ -57,11 +57,11 @@
 ;;;
 ;;; %EVALUATE
 ;;;
-(define (%evaluate expr)
+(define (%evaluate expr module)
   ;; Evaluate EXPR in the current module.  EXPR is an arbitrary S-expression
   ;; that may contain calls to the markup functions defined in a markup
   ;; package such as `(skribilo package base)', e.g., `(bold "hello")'.
-  (let ((result (eval expr (current-module))))
+  (let ((result (eval expr module)))
     (if (ast? result)
         (let ((file (source-property expr 'filename))
               (line (source-property expr 'line))
@@ -93,7 +93,8 @@
 ;;;
 (define* (evaluate-document-from-port port engine
 				      :key (env '())
-				           (reader (*document-reader*)))
+				           (reader (*document-reader*))
+                                           (module (*skribilo-user-module*)))
   (with-debug 2 'evaluate-document-from-port
      (debug-item "engine=" engine)
      (debug-item "reader=" reader)
@@ -110,9 +111,11 @@
 
               (let loop ((exp (reader port)))
                 (if (eof-object? exp)
-                    (evaluate-document (%evaluate exp) e :env env)
+                    (evaluate-document (%evaluate exp module)
+                                       e :env env)
                     (begin
-                      (evaluate-document (%evaluate exp) e :env env)
+                      (evaluate-document (%evaluate exp module)
+                                         e :env env)
                       (loop (reader port)))))))))))
 
 
@@ -127,7 +130,12 @@
 ;; List of the names of files already loaded.
 (define *loaded-files* (make-parameter '()))
 
-(define* (load-document file :key (engine #f) (path #f) :allow-other-keys
+
+(define* (load-document file
+                        :key engine path
+                             (module (*skribilo-user-module*))
+                             (reader (*document-reader*))
+                        :allow-other-keys
 			:rest opt)
   (with-debug 4 'load-document
      (debug-item "  engine=" engine)
@@ -167,7 +175,9 @@
 	   ;; Load it
 	   (with-input-from-file filep
 	     (lambda ()
-	       (evaluate-document-from-port (current-input-port) ei)))
+	       (evaluate-document-from-port (current-input-port) ei
+                                            :module module
+                                            :reader reader)))
 
 	   (*loaded-files* (cons filep (*loaded-files*))))))))
 
@@ -176,7 +186,7 @@
 ;;;
 (define* (include-document file :key (path (*document-path*))
 			             (reader (*document-reader*))
-                                     (module (current-module)))
+                                     (module (*skribilo-user-module*)))
   (unless (every string? path)
     (raise (condition (&invalid-argument-error (proc-name 'include-document)
 					       (argument  path)))))
@@ -203,4 +213,4 @@
                       (car res)
                       (reverse! res))
                   (Loop (reader (current-input-port))
-                        (cons (%evaluate exp) res))))))))))
+                        (cons (%evaluate exp module) res))))))))))