summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/guile/skribilo.scm3
-rw-r--r--src/guile/skribilo/biblio.scm41
-rw-r--r--src/guile/skribilo/evaluator.scm10
-rw-r--r--src/guile/skribilo/module.scm34
-rw-r--r--src/guile/skribilo/package/slide.scm75
-rw-r--r--src/guile/skribilo/skribe/bib.scm3
6 files changed, 79 insertions, 87 deletions
diff --git a/src/guile/skribilo.scm b/src/guile/skribilo.scm
index de7dac2..a560b46 100644
--- a/src/guile/skribilo.scm
+++ b/src/guile/skribilo.scm
@@ -393,6 +393,7 @@ Processes a Skribilo/Skribe source file and produces its output.
 	  (set-current-module user-module)))))
 
 
+
 ;;;; ======================================================================
 ;;;;
 ;;;;				      M A I N
@@ -405,6 +406,7 @@ Processes a Skribilo/Skribe source file and produces its output.
 			     (option-ref options 'target "html")))
 	 (output-file       (option-ref options 'output #f))
 	 (debugging-level   (option-ref options 'debug "0"))
+	 (warning-level     (option-ref options 'warning "2"))
 	 (load-path         (option-ref options 'load-path "."))
 	 (bib-path          (option-ref options 'bib-path "."))
 	 (preload           '())
@@ -433,6 +435,7 @@ Processes a Skribilo/Skribe source file and produces its output.
     (parameterize ((*current-engine* engine)
 		   (*document-path*  (cons load-path (*document-path*)))
 		   (*bib-path*       (cons bib-path (*bib-path*)))
+		   (*warning*        (string->number warning-level))
 		   (*verbose*        (let ((v (option-ref options
 							  'verbose 0)))
 				       (if (number? v) v
diff --git a/src/guile/skribilo/biblio.scm b/src/guile/skribilo/biblio.scm
index 045e3ae..cbb9202 100644
--- a/src/guile/skribilo/biblio.scm
+++ b/src/guile/skribilo/biblio.scm
@@ -25,10 +25,12 @@
   :use-module (skribilo utils syntax) ;; `when', `unless'
   :use-module (skribilo module)
   :use-module (skribilo skribe bib) ;; `make-bib-entry'
+  :autoload   (skribilo reader)      (%default-reader)
   :autoload   (skribilo parameters)  (*bib-path*)
   :autoload   (ice-9 format)         (format)
   :export (bib-table? make-bib-table default-bib-table
-	   bib-add!))
+	   bib-add! bib-duplicate
+	   skribe-open-bib-file parse-bib))
 
 (set-current-reader %skribilo-module-reader)
 
@@ -92,24 +94,25 @@
 ;;;
 ;;; ======================================================================
 (define (parse-bib table port)
-  (if (not (bib-table? table))
-      (skribe-error 'parse-bib "Illegal bibliography table" table)
-      (let ((from (port-file-name port)))
-	(let Loop ((entry (read port)))
-	  (unless (eof-object? entry)
-	    (cond
-	      ((and (list? entry) (> (length entry) 2))
-	       (let* ((kind   (car entry))
-		      (key    (format #f "~A" (cadr entry)))
-		      (fields (cddr entry))
-		      (old    (hash-ref table key)))
-		 (if old
-		     (bib-duplicate ident from old)
-		     (hash-set! table key
-				(make-bib-entry kind key fields from)))
-		 (Loop (read port))))
-	      (else
-	       (%bib-error 'bib-parse entry))))))))
+  (let ((read %default-reader)) ;; FIXME: We should use a fluid
+    (if (not (bib-table? table))
+	(skribe-error 'parse-bib "Illegal bibliography table" table)
+	(let ((from (port-filename port)))
+	  (let Loop ((entry (read port)))
+	    (unless (eof-object? entry)
+	      (cond
+	       ((and (list? entry) (> (length entry) 2))
+		(let* ((kind   (car entry))
+		       (key    (format #f "~A" (cadr entry)))
+		       (fields (cddr entry))
+		       (old    (hash-ref table key)))
+		  (if old
+		      (bib-duplicate ident from old)
+		      (hash-set! table key
+				 (make-bib-entry kind key fields from)))
+		  (Loop (read port))))
+	       (else
+		(%bib-error 'bib-parse entry)))))))))
 
 
 ;;; ======================================================================
diff --git a/src/guile/skribilo/evaluator.scm b/src/guile/skribilo/evaluator.scm
index 73f7db0..e4ef208 100644
--- a/src/guile/skribilo/evaluator.scm
+++ b/src/guile/skribilo/evaluator.scm
@@ -55,15 +55,15 @@
 ;;;
 (define (%evaluate expr)
   (let ((result (eval expr (current-module))))
-    (if (or (ast? result) (markup? result))
+
+    (if (ast? result)
 	(let ((file (source-property expr 'filename))
 	      (line (source-property expr 'line))
 	      (column (source-property expr 'column)))
-; 	  (format #t "~%* source props for `~a': ~a~%"
-; 		  result (source-properties expr))
 	  (slot-set! result 'loc
 		     (make <location>
 		       :file file :line line :pos column))))
+
     result))
 
 
@@ -93,9 +93,7 @@
      (let ((e (if (symbol? engine) (find-engine engine) engine)))
        (debug-item "e=" e)
        (if (not (engine? e))
-	   (begin
-	     (format #t "engine: ~a~%" e)
-	     (skribe-error 'skribe-eval-port "cannot find engine" engine))
+	   (skribe-error 'skribe-eval-port "cannot find engine" engine)
 	   (let loop ((exp (reader port)))
 	     (with-debug 10 'skribe-eval-port
 		(debug-item "exp=" exp))
diff --git a/src/guile/skribilo/module.scm b/src/guile/skribilo/module.scm
index 2418a2c..66f4940 100644
--- a/src/guile/skribilo/module.scm
+++ b/src/guile/skribilo/module.scm
@@ -146,38 +146,4 @@ execution of Skribilo/Skribe code."
   %skribilo-user-module)
 
 
-;; FIXME:  This will eventually be replaced by the per-module reader thing in
-;;         Guile.
-(define-public (load-file-with-read file read module)
-  (with-debug 5 'load-file-with-read
-     (debug-item "loading " file)
-
-     (with-input-from-file (search-path %load-path file)
-       (lambda ()
-;      (format #t "load-file-with-read: ~a~%" read)
-	 (let loop ((sexp (read))
-		    (result #f))
-	   (if (not (eof-object? sexp))
-	       (begin
-;              (format #t "preparing to evaluate `~a'~%" sexp)
-		 (primitive-eval sexp)
-		 (loop (read)))))))))
-
-(define-public (load-skribilo-file file reader-name)
-  (load-file-with-read file (make-reader reader-name) (current-module)))
-
-(define*-public (load-skribe-modules :optional (debug? #f))
-  "Load the core Skribe modules, both in the @code{(skribilo skribe)}
-hierarchy and in @code{(run-time-module)}."
-  (for-each (lambda (mod)
-              (format #t "~~ loading skribe module `~a'...~%" mod)
-              (load-skribilo-file (string-append "skribilo/skribe/"
-                                                 mod ".scm")
-                                  'skribe)
-              (module-use! (run-time-module)
-                           (resolve-module `(skribilo skribe
-                                             ,(string->symbol mod)))))
-            %skribe-core-modules))
-
-
 ;;; module.scm ends here
diff --git a/src/guile/skribilo/package/slide.scm b/src/guile/skribilo/package/slide.scm
index 37ee054..f5f0011 100644
--- a/src/guile/skribilo/package/slide.scm
+++ b/src/guile/skribilo/package/slide.scm
@@ -119,33 +119,52 @@
 ;*---------------------------------------------------------------------*/
 (define %slide-old-ref ref)
 
-(define-markup (ref #!rest opt #!key (slide #f))
-   (if (not slide)
-       (apply %slide-old-ref opt)
-       (new unresolved
-	  (proc (lambda (n e env)
-		   (cond
-		      ((eq? slide 'next)
-		       (let ((c (assq n %slide-the-slides)))
-			  (if (pair? c)
-			      (handle (cadr c))
-			      #f)))
-		      ((eq? slide 'prev)
-		       (let ((c (assq n (reverse %slide-the-slides))))
-			  (if (pair? c)
-			      (handle (cadr c))
-			      #f)))
-		      ((number? slide)
-		       (let loop ((s %slide-the-slides))
-			  (cond
-			     ((null? s)
-			      #f)
-			     ((= slide (markup-option (car s) :number))
-			      (handle (car s)))
-			     (else
-			      (loop (cdr s))))))
-		      (else
-		       #f)))))))
+;; Extend the definition of `ref'.
+;; FIXME: This technique breaks `ref' for some reason.
+; (set! ref
+;       (lambda args
+; 	;; Filter out ARGS and look for a `:slide' keyword argument.
+; 	(let loop ((slide #f)
+; 		   (opt '())
+; 		   (args args))
+; 	  (if (null? args)
+; 	      (set! opt (reverse! opt))
+; 	      (let ((s? (eq? (car args) :slide)))
+; 		(loop (if s? (cadr args) #f)
+; 		      (if s? opt (cons (car args) opt))
+; 		      (if s? (cddr args) (cdr args)))))
+
+; 	  (format (current-error-port)
+; 		  "slide.scm:ref: slide=~a opt=~a~%" slide opt)
+
+; 	  (if (not slide)
+; 	      (apply %slide-old-ref opt)
+; 	      (new unresolved
+; 		   (proc (lambda (n e env)
+; 			   (cond
+; 			    ((eq? slide 'next)
+; 			     (let ((c (assq n %slide-the-slides)))
+; 			       (if (pair? c)
+; 				   (handle (cadr c))
+; 				   #f)))
+; 			    ((eq? slide 'prev)
+; 			     (let ((c (assq n (reverse %slide-the-slides))))
+; 			       (if (pair? c)
+; 				   (handle (cadr c))
+; 				   #f)))
+; 			    ((number? slide)
+; 			     (let loop ((s %slide-the-slides))
+; 			       (cond
+; 				((null? s)
+; 				 #f)
+; 				((= slide (markup-option
+; 					   (car s) :number))
+; 				 (handle (car s)))
+; 				(else
+; 				 (loop (cdr s))))))
+; 			    (else
+; 			     #f)))))))))
+
 
 ;*---------------------------------------------------------------------*/
 ;*    slide-pause ...                                                  */
@@ -368,6 +387,8 @@
 (define &latex-play #f)
 (define &latex-play* #f)
 
+;;; FIXME: We shouldn't load `latex.scm' from here.  Instead, we should
+;;; register a hook on its load.
 (let ((le (find-engine 'latex)))
    ;; slide-vspace
    (markup-writer 'slide-vspace le
diff --git a/src/guile/skribilo/skribe/bib.scm b/src/guile/skribilo/skribe/bib.scm
index 0a80ec9..2bc2238 100644
--- a/src/guile/skribilo/skribe/bib.scm
+++ b/src/guile/skribilo/skribe/bib.scm
@@ -19,7 +19,8 @@
 ;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 ;;; USA.
 
-(define-skribe-module (skribilo skribe bib))
+(define-skribe-module (skribilo skribe bib)
+  :use-module (skribilo biblio))
 
 ;;; Author:  Manuel Serrano
 ;;; Commentary: