[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: dumplisp

>   Date: Fri, 1 Feb 91 09:01:26 CST
>   From: lynch@aristotle.ils.nwu.edu (Richard Lynch)
>   According to the manual, dumplisp "executes all the functions on the list
>   *save-exit-functions*.  This list initially contains a single function that
>   closes all windows, takes down and stores the current menu bar, and
>   disposes of other pointers to the Macintosh heap.  Macintosh Allegro CL
>   then performs a garbage collection and dumps the heap image."
>   This raises some questions:
>     After the dumplisp finishes, the menubar is restored, and a listener pops
>   up.  Is this accomplished by executing *restore-lisp-functions* or is this
>   hard-wired?
>The menubar restoration is performed by *restore-lisp-functions*.  The
Is there any way to NOT do the functions in *restore-lisp-functions*, but
have them saved for re-boot.  ie, allow the user to choose quit, which
prompts for a save, then does a dumplisp which includes the
*restore-lisp-functions*, but DOESN'T then do those functions.

>listener poping up is a side-effect of entering the top-level-loop,
> which calls (CURRENT-LISTENER), thereby creating a listener if one
>doesn't already exist.  [at least, this is how it should work.]
Yes.  It does work.

>     The menu bar that is saved in this description:  If it bears no
>   resemblance at all to the *default-menu-bar*, is it restored?  Are the
>   mac-pointers taken care of?
>The menubar restored is the same one that was there when you called
>dumplisp.  The code doesn't care anything about *DEFAULT-MENUBAR*.
>When you deinstall a menu (i.e. remove it from the menubar), it has
>no mac-pointers.  Hence, the Mac pointers are taken care of by
>deinstalling all the menus in the menubar (and just keeping track
>of the menu objects).
>     Is there any way to do a dumplisp and then quit?  We tried (dumplisp
>   "name") (quit) and the (quit) seemed to have been ignored.
>The call to QUIT needs to be eval-enqueued.
This was suggested by another reader, <REM@SUWATSON.stanford.edu>, but alas
it does not work.
At least it does not work if you do:
(eval-enqueue '(dumplisp "test quit") (quit))
[We need to eval-enqueue the dumplisp because it's being called from one of
the menus which it is going to deinstall which then wants a
return-value...Something goes wrong here. (not surprising)]

Thanks though.  With your help (and REM's), we've got it all going EXCEPT
the part where quit allows a dumplisp and then a quit.  We can live with

"TANSTAAFL" Rich lynch@aristotle.ils.nwu.edu