Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!bloom-beacon!apple!bionet!agate!ucbvax!SUMEX-AIM.STANFORD.EDU!lane From: lane@SUMEX-AIM.STANFORD.EDU (Christopher Lane) Newsgroups: comp.sys.xerox Subject: Re: End to reverse-video PAGEFULLFNs Message-ID: <622126715.A4816.KSL-1186-13.lane@SUMEX-AIM.Stanford.EDU> Date: 6 Oct 88 16:12:43 GMT References: <12436151294.19.KARP@SUMEX-AIM.Stanford.EDU> Sender: daemon@ucbvax.BERKELEY.EDU Reply-To: info-1100@tut.cis.ohio-state.edu Organization: The Internet Lines: 44 Peter, you might want to consider a formulation of the function something like: (PAGEFULLFN (LAMBDA (WINDOW) (if (NOT (READP T)) then (RESETLST (RESETSAVE (CONTROL T)) (RESETSAVE (INVERTW WINDOW PAGEFULL.TEXTURE) `(INVERTW ,WINDOW ,PAGEFULL.TEXTURE)) (READC))))) This will restore the window both on the user typing a character and if an error occurs, eg. the user types ^E (which leaves the window full of dots if you use the function you provided). Also, unless I'm missing something, it seems you want (CONTROL NIL) after your READC, not (CONTROL T) again, as your function permanently leaves things in the non-default state (the RESETSAVE version above fixes this problem). You might also want to remove ':'s in comments (on 'PKarp' and 'Actions') to make the code easier to enter for post-Koto users (':' is the package marker). Another problem with your PAGEFULLFN (and the rewrite above), at least under Medley--haven't tried Koto, is that if you evaluate the following two forms (in a small EXEC window) the window holding is not the same: SYSFILES (PROGN SYSFILES) due to the READC & CONTROL interacting (or not) with the . An alternate approach which gets around this problem (works in Medley but might need tuning for Koto) is: (DEFINEQ (PAGEFULL.INVERTW (LAMBDA (WINDOW SHADE) (INVERTW WINDOW (OR SHADE PAGEFULL.TEXTURE))))) (CHANGENAME 'PAGEFULLFN 'INVERTW 'PAGEFULL.INVERTW) which preserves the functionality of the original PAGEFULLFN but imposes a new shade on it (note you can't use ADVISE here as INVERTW is both called twice, once as part of a reset form, thus the second call would not be modified). - Christopher