Re: [spr30371] setting startup package

David Margolies <[email protected]> Wed, 29 Jun 2005 14:02:15 -0700
Newsgroups gmane.lisp.allegro
Message-ID <[email protected]>
  how can I set the package at startup?  I tried things like
    alisp -e "(in-package :common-lisp)"
  which do not work.

The '-e' processing is too early. See
doc/delivery.htm#initial-package-2 `Specifying the initial value of
*package*'. It says to have the function that is the value of
*restart-init-function* include

  (tpl:setq-default *package* (find-package :my-package))
  (rplacd (assoc 'tpl::*saved-package*
		 tpl:*default-lisp-listener-bindings*)
      'common-lisp:*package*)

You can do that by putting the following in your .clinit.cl file
(replacing :my-package with whatever package you want):

;;---------

(defun set-init-pack-from-clinit-file ()
  (let ((initial-restart-init-function *restart-init-function*))
    (cond (initial-restart-init-function
            (setf *restart-init-function*
                  #'(lambda ()
                      (tpl:setq-default *package* (find-package :my-package))
                      (rplacd (assoc 'tpl::*saved-package*
                                     tpl:*default-lisp-listener-bindings*)
                        'common-lisp:*package*)
                      (setf *restart-init-function* 
                            initial-restart-init-function)
                      (funcall initial-restart-init-function))))
           (t
             (setf *restart-init-function*
                      (tpl:setq-default *package* (find-package :my-package))
                      (rplacd (assoc 'tpl::*saved-package*
                                     tpl:*default-lisp-listener-bindings*)
                        'common-lisp:*package*)
                       (setf *restart-init-function* nil)))))))

(set-init-pack-from-clinit-file)

;;----------


David Margolies
Franz Inc.