about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog21
-rw-r--r--src/guile/skribilo.scm16
-rw-r--r--src/guile/skribilo/lib.scm6
-rw-r--r--src/guile/skribilo/skribe/api.scm18
4 files changed, 36 insertions, 25 deletions
diff --git a/ChangeLog b/ChangeLog
index e941de2..74c46bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,27 @@
 # arch-tag: automatic-ChangeLog--lcourtes@laas.fr--2005-mobile/skribilo--devel--1.2
 #
 
+2006-01-03 23:16:53 GMT	Ludovic Courtes <ludovic.courtes@laas.fr>	patch-18
+
+    Summary:
+      Cleaned up the use of a Skribe-compatible `gensym'.
+    Revision:
+      skribilo--devel--1.2--patch-18
+
+    * src/guile/skribilo.scm (gensym): Removed.
+    
+    * src/guile/skribilo/lib.scm (define-simple-markup): Comply with Guile's
+      version of `gensym'.
+      (define-simple-container): Likewise.
+    
+    * src/guile/skribilo/skribe/api.scm (gensym): Improved.  Exported via
+      `#:replace'.
+
+    modified files:
+     ChangeLog src/guile/skribilo.scm src/guile/skribilo/lib.scm
+     src/guile/skribilo/skribe/api.scm
+
+
 2005-12-06 23:22:51 GMT	Ludovic Courtes <ludovic.courtes@laas.fr>	patch-17
 
     Summary:
diff --git a/src/guile/skribilo.scm b/src/guile/skribilo.scm
index a560b46..e131ff3 100644
--- a/src/guile/skribilo.scm
+++ b/src/guile/skribilo.scm
@@ -39,22 +39,6 @@ exec ${GUILE-guile} --debug -l $0 -c "(apply $main (cdr (command-line)))" "$@"
 ;;;;
 ;;;; Code:
 
-(let ((gensym-orig gensym))
-  ;; In Skribe, `gensym' expects a symbol as its (optional) argument, while
-  ;; Guile's `gensym' expect a string.  XXX
-  (set! gensym
-	(lambda args
-	  (if (null? args)
-	      (gensym-orig)
-	      (let ((the-arg (car args)))
-		(cond ((symbol? the-arg)
-		       (gensym-orig (symbol->string the-arg)))
-		      ((string? the-arg)
-		       (gensym-orig the-arg))
-		      (else
-		       (skribe-error 'gensym "Invalid argument type"
-				     the-arg))))))))
-
 
 
 (define-module (skribilo)
diff --git a/src/guile/skribilo/lib.scm b/src/guile/skribilo/lib.scm
index 7a0c306..fc00896 100644
--- a/src/guile/skribilo/lib.scm
+++ b/src/guile/skribilo/lib.scm
@@ -111,7 +111,8 @@
   `(define-markup (,markup :rest opts :key ident class loc)
      (new markup
 	  (markup ',markup)
-	  (ident (or ident (symbol->string (gensym ',markup))))
+	  (ident (or ident (symbol->string
+			    (gensym ',(symbol->string markup)))))
 	  (loc loc)
 	  (class class)
 	  (required-options '())
@@ -126,7 +127,8 @@
    `(define-markup (,markup :rest opts :key ident class loc)
        (new container
 	  (markup ',markup)
-	  (ident (or ident (symbol->string (gensym ',markup))))
+	  (ident (or ident (symbol->string
+			    (gensym ',(symbol->string markup)))))
 	  (loc loc)
 	  (class class)
 	  (required-options '())
diff --git a/src/guile/skribilo/skribe/api.scm b/src/guile/skribilo/skribe/api.scm
index a300606..9a6369d 100644
--- a/src/guile/skribilo/skribe/api.scm
+++ b/src/guile/skribilo/skribe/api.scm
@@ -19,7 +19,8 @@
 ;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 ;;; USA.
 
-(define-skribe-module (skribilo skribe api))
+(define-skribe-module (skribilo skribe api)
+  :replace (gensym))
 
 ;;; Author:  Manuel Serrano
 ;;; Commentary:
@@ -32,13 +33,16 @@
 ;;; The contents of the file below are unchanged compared to Skribe 1.2d's
 ;;; `api.scm' file found in the `common' directory.
 
-(let ((gensym-orig gensym))
+(define %gensym-orig (module-ref the-root-module 'gensym))
+
+(define gensym
   ;; In Skribe, `gensym' accepts a symbol.  Guile's `gensym' accepts only
-  ;; strings.
-  (set! gensym
-        (lambda (obj)
-          (gensym-orig (cond ((symbol? obj) (symbol->string obj))
-                             (else obj))))))
+  ;; strings (or no argument).
+  (lambda obj
+    (apply %gensym-orig
+	   (cond ((null? obj) '())
+		 ((symbol? (car obj)) (list (symbol->string (car obj))))
+		 (else (skribe-error 'gensym "invalid argument" obj))))))
 
 
 ;*---------------------------------------------------------------------*/