[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Info MCL Digest Digest V2 #14
- To: info-mcl@cambridge.apple.com
- Subject: Re: Info MCL Digest Digest V2 #14
- From: dblamkins@aol.com
- Date: Sun, 16 Jan 94 11:46:23 EST
- Reply-to: <dblamkins@aol.com>
- Sender: "dblamkins" <dblamkins@aol.com>
Andrew Mickish (amickish@cs.cmu.edu) wrote:
>10) While developing my application, I frequently need to quit my lisp
> listener and load my files from scratch. However, this also kills all
> the FRED windows that I have brought up during my session. Is there
> any way to spawn a new lisp process without dumping my FRED windows?
I use the following code in my Init.Lisp file:
;; Remember open FRED windows when we quit.
(defconstant *window-logfile-name* "CCL:WorkFiles")
(flet ((remember-fred-files ()
(with-open-file (window-log
*window-logfile-name*
:direction :output :if-exists :supersede)
(map-windows
#'(lambda (w)
(let ((fname (window-filename w)))
(when fname (print fname window-log))))
:class 'fred-window))))
;I can't do (advise quit (remember-fred-files)), because quit is already
;bound to the Quit item in the File menu. To make advise work on quit, I'd
;have to bind the advised quit to the menu-item-action-function.
;This is simpler and faster, and who cares about portability?
(pushnew #'remember-fred-files *lisp-cleanup-functions*))
;; Reopen the files that were open last time we quit.
(with-open-file (window-log
*window-logfile-name*
:direction :input :if-does-not-exist nil)
(when window-log (let ((fname))
(loop (setf fname (read window-log nil))
(if fname
(when (probe-file fname)
(ed fname))
(return))))))