WIP: current-module
This commit is contained in:
parent
86744b24db
commit
c18ed2be4c
|
@ -147,16 +147,23 @@
|
|||
|
||||
;;;;;;;;;;; ************************************************************
|
||||
|
||||
(define *current-module* #f)
|
||||
(define (guile:current-module)
|
||||
*current-module*
|
||||
)
|
||||
(define guile:current-module (make-fluid #f))
|
||||
|
||||
(define lookup-global #f)
|
||||
(define (global-lookup-function name define?)
|
||||
;; (if define? (module-make-local-var! (guile:current-module) name)
|
||||
;; (module-variable (guile:current-module) name))
|
||||
'("boe")
|
||||
)
|
||||
(define (set-current-module m)
|
||||
(display "set-current-module: name=")
|
||||
(display (module-name m))
|
||||
(display "\n")
|
||||
(set! *current-module* m))
|
||||
(let ((o (guile:current-module)))
|
||||
(guile:current-module m)
|
||||
;; (unless o
|
||||
;; (set! lookup-global global-lookup-function))
|
||||
o))
|
||||
|
||||
(define (make-hook . n)
|
||||
'())
|
||||
|
|
|
@ -67,16 +67,33 @@ lookup_variable (struct scm *name, struct scm *define_p)
|
|||
|
||||
if (handle == cell_f)
|
||||
{
|
||||
handle = hashq_get_handle_ (M0, name, cell_f);
|
||||
if (handle == cell_f && define_p == cell_t)
|
||||
struct scm *lookup = hashq_get_handle_ (M0, cstring_to_symbol ("lookup-global"), cell_f);
|
||||
if (lookup != cell_f && lookup->cdr != cell_f)
|
||||
{
|
||||
if (g_debug > 0)
|
||||
eputs ("lookup? ");
|
||||
display_error_ (lookup);
|
||||
eputs (" ... \n");
|
||||
handle = apply (lookup->cdr, cons (name, cons (define_p, cell_nil)), R0);
|
||||
eputs ("lookup: ");
|
||||
display_error_ (name);
|
||||
eputs (" => ");
|
||||
write_error_ (handle);
|
||||
if (handle != cell_f)
|
||||
handle = cons (name, name->variable);
|
||||
}
|
||||
else
|
||||
{
|
||||
handle = hashq_get_handle_ (M0, name, cell_f);
|
||||
if (handle == cell_f && define_p == cell_t)
|
||||
{
|
||||
eputs ("lookup + define: ");
|
||||
write_error_ (name);
|
||||
eputs ("\n");
|
||||
if (g_debug > 0)
|
||||
{
|
||||
eputs ("lookup + define: ");
|
||||
write_error_ (name);
|
||||
eputs ("\n");
|
||||
}
|
||||
handle = hashq_set_handle_x (M0, name, cell_f);
|
||||
}
|
||||
handle = hashq_set_handle_x (M0, name, cell_f);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue