[Gbbopen-list] Any way to have GBB Open leave *PACKAGE* alone?

Robert Goldman rpgoldman at sift.info
Mon Mar 19 12:38:17 EDT 2012


We are using GBB Open pretty happily, but one irritation a 
number of us has is the way it messes with the package.

Right now, when I load my system (which uses GBBOpen), 
it loads all the files through ASDF and then....

I have to change my package.

I looked into disabling SET-REPL-PACKAGE, but then I find in initiate.lisp 
that it is called in set-module like this:

(defun startup-module (module-name options &optional package
                                                     ;; not documented
                                                     dont-remember)
  (handler-bind ((error #'(lambda (e)
                            (declare (ignore e))
                            (let ((restart (find-restart
                                            (intern
                                             (symbol-name '#:create-all)
                                             :module-manager))))
                              (when restart
                                (invoke-restart restart))))))
    (startup-gbbopen)
    (funcall-in-package '#:do-module-manager-repl-command ':module-manager
                        ':cm
                        (list* module-name ':propagate options)
                        dont-remember))
  (when package
    (set-repl-package package)
    (import '(common-lisp-user::gbbopen-tools
              common-lisp-user::gbbopen
              common-lisp-user::gbbopen-user
              common-lisp-user::gbbopen-test)
            *package*))
  (values))

I.e., the code relies on a side-effect of SET-REPL-PACKAGE to establish 
the value of *PACKAGE*.  At least, I /think/ that is what it's doing.  
At any rate, the effect of that IMPORT call seems very difficult to 
predict, since it relies on an uncontrolled dynamic variable, 
and possibly undesirable.

Any chance of changing this behavior?  I can see it might be desirable for 
interactive development in the context of GBB, but if you are using GBB as a 
library inside a larger system, it's a bit bothersome.

Cheers,
r


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



More information about the Gbbopen-list mailing list