Fluidize (runtime options) internal variables *options*, *parent*.
authorMatt Birkholz <matt@birkholz.chandler.az.us>
Fri, 7 Feb 2014 18:20:07 +0000 (11:20 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Tue, 12 Aug 2014 00:30:29 +0000 (17:30 -0700)
src/runtime/make.scm
src/runtime/option.scm
src/runtime/runtime.pkg

index 328ffde9eee91d8492925c852b8d574f3755fc1b..e6e35e8f13ef69099af5323f1e45dc27efe4f509 100644 (file)
@@ -502,6 +502,7 @@ USA.
    ;; Syntax
    (RUNTIME KEYWORD)
    (RUNTIME NUMBER-PARSER)
+   (RUNTIME OPTIONS)
    (RUNTIME PARSER)
    (RUNTIME PARSER FILE-ATTRIBUTES)
    ((RUNTIME PATHNAME) INITIALIZE-PARSER-METHOD!)
index fd7905ef7cb12ba5cd06afc06a3c3d5ef6d33845..2a10a47eb1492e1b5c8e083df8d6758c56fe9240 100644 (file)
@@ -46,12 +46,12 @@ USA.
     (define (search-parent pathname)
       (call-with-values
          (lambda ()
-           (fluid-let ((*options* '())
-                       (*parent* #f))
-             (let-fluid load/suppress-loading-message? #t
-               (lambda ()
-                 (load pathname (make-load-environment))))
-             (values *options* *parent*)))
+           (let-fluids *options* '()
+                       *parent* #f
+                       load/suppress-loading-message? #t
+             (lambda ()
+               (load pathname (make-load-environment))
+               (values (fluid *options*) (fluid *parent*)))))
        find-option))
 
     (define (make-load-environment)
@@ -61,14 +61,14 @@ USA.
 
     (if (memq name loaded-options)
        name
-       (find-option *options* *parent*))))
+       (find-option (fluid *options*) (fluid *parent*)))))
 
 (define (define-load-option name . loaders)
-  (set! *options* (cons (cons name loaders) *options*))
+  (set-fluid! *options* (cons (cons name loaders) (fluid *options*)))
   unspecific)
 
 (define (further-load-options place)
-  (set! *parent* place)
+  (set-fluid! *parent* place)
   unspecific)
 
 (define (initial-load-options)
@@ -94,9 +94,13 @@ USA.
        pathname))
 
 (define loaded-options '())
-(define *options* '())                 ; Current options.
-(define *parent* initial-load-options) ; A thunk or a pathname/string or #f.
+(define *options*)              ; Current options.
+(define *parent*)               ; A thunk or a pathname/string or #f.
 (define *initial-options-file* #f)
+
+(define (initialize-package!)
+  (set! *options* (make-fluid '()))
+  (set! *parent* (make-fluid initial-load-options)))
 \f
 (define (dummy-option-loader)
   unspecific)
index e3a02903ca103af23e414e2b6f10b3f4fc97f4a1..6e6a40109da987869cc3c9bf046850cf35edc3b4 100644 (file)
@@ -3015,7 +3015,8 @@ USA.
          local-load-options
          standard-load-options
          standard-option-loader
-         standard-system-loader))
+         standard-system-loader)
+  (initialization (initialize-package!)))
 
 (define-package (runtime parser)
   (files "parse")