$ od -c -N 50000 [Erinyes]<LispManual>PAguts.im!6
0000000 \r \r \r { B e g i n S u b S e c
0000020 U n d o i n g } \r { T i t l e
0000040 U n d o i n g } \r { T e x t \r
0000060 \r { T a g U n d o i n g } \r \r
0000100 { i n d e x * P R I M A R Y *
0000120 U n d o i n g } \r \r N o t e :
0000140 T h i s d i s c u s s i o
0000160 n o n l y a p p l i e s t
0000200 o u n d o i n g u n d e r
0000220 t h e e x e c u t i v e a n
0000240 d b r e a k ; t h e e d i
0000260 t o r s h a n d l e s u n d
0000300 o i n g i t s e l f i n a
0000320 s l i g h t l y d i f f e r
0000340 e n t f a s h i o n { n o t e
0000360 , a s d e s c r i b e d
0000400 i n { P a g e R e f T a g
0000420 E d i t o r A n d P A } } . \r \r
0000440 \r T h e { l i s p U N D O }
0000460 c a p a b i l i t y o f t
0000500 h e p r o g r a m m e r ' s
0000520 a s s i s t a n t i s i m p
0000540 l e m e n t e d b y r e q u
0000560 i r i n g t h a t e a c h
0000600 o p e r a t i o n t h a t i
0000620 s t o b e u n d o a b l e
0000640 b e r e s p o n s i b l e
0000660 i t s e l f f o r s a v i n
0000700 g o n t h e h i s t o r y
0000720 l i s t e n o u g h i n f
0000740 o r m a t i o n t o e n a b
0000760 l e r e v e r s a l o f i
0001000 t s s i d e e f f e c t s .
0001020 I n o t h e r w o r d s
0001040 , t h e a s s i s t a n t
0001060 d o e s n o t " k n o w "
0001100 w h e n i t i s a b o u t
0001120 t o p e r f o r m a d e
0001140 s t r u c t i v e o p e r a t
0001160 i o n , i . e . , i t i s
0001200 n o t c o n s t a n t l y
0001220 c h e c k i n g o r a n t i
0001240 c i p a t i n g . I n s t e
0001260 a d , i t s i m p l y e x
0001300 e c u t e s o p e r a t i o n
0001320 s , a n d a n y u n d o a
0001340 b l e c h a n g e s t h a t
0001360 o c c u r a r e a u t o m
0001400 a t i c a l l y s a v e d o
0001420 n t h e h i s t o r y l i
0001440 s t b y t h e r e s p o n
0001460 s i b l e f u n c t i o n s .
0001500 T h e { p a c o m U N D
0001520 O } c o m m a n d , w h i c
0001540 h i n v o l v e s r e c o v
0001560 e r i n g t h e s a v e d
0001600 i n f o r m a t i o n a n d
0001620 p e r f o r m i n g t h e c
0001640 o r r e s p o n d i n g i n v
0001660 e r s e s , w o r k s t h e
0001700 s a m e w a y , s o t h
0001720 a t t h e u s e r c a n
0001740 { p a c o m U N D O } a n
0001760 { p a c o m U N D O } , a n
0002000 d { p a c o m U N D O } t
0002020 h a t e t c . \r \r \r A t e a
0002040 c h p o i n t , u n t i l
0002060 t h e u s e r s p e c i f i
0002100 c a l l y r e q u e s t s a
0002120 n o p e r a t i o n t o b
0002140 e u n d o n e , t h e a s
0002160 s i s t a n t d o e s n o t
0002200 k n o w , o r c a r e ,
0002220 w h e t h e r i n f o r m a t
0002240 i o n h a s b e e n s a v
0002260 e d t o e n a b l e t h e
0002300 u n d o i n g . O n l y
0002320 w h e n t h e u s e r a t
0002340 t e m p t s t o u n d o a
0002360 n o p e r a t i o n d o e s
0002400 t h e a s s i s t a n t c
0002420 h e c k t o s e e w h e t
0002440 h e r a n y i n f o r m a t
0002460 i o n h a s b e e n s a v
0002500 e d . I f n o n e h a s
0002520 b e e n s a v e d , a n d
0002540 t h e u s e r h a s s p
0002560 e c i f i c a l l y n a m e d
0002600 t h e e v e n t h e w a
0002620 n t s u n d o n e , t h e
0002640 a s s i s t a n t t y p e s
0002660 { i n d e x * P R I M A R Y *
0002700 n o t h i n g s a v e d (
0002720 P r i n t e d b y S y s t e
0002740 m ) } { l i s p n o t h i n g
0002760 s a v e d } . ( W h e n
0003000 t h e u s e r s i m p l y
0003020 t y p e s { l i s p U N D O
0003040 } , t h e a s s i s t a n t
0003060 s e a r c h e s f o r t h
0003100 e l a s t u n d o a b l e
0003120 e v e n t , i g n o r i n g
0003140 e v e n t s a l r e a d y u
0003160 n d o n e a s w e l l a s
0003200 { p a c o m U N D O } o p
0003220 e r a t i o n s t h e m s e l
0003240 v e s . ) \r \r \r T h i s i m p
0003260 l e m e n t a t i o n m i n i
0003300 m i z e s t h e o v e r h e
0003320 a d f o r u n d o i n g .
0003340 O n l y t h o s e o p e r
0003360 a t i o n s w h i c h a c t
0003400 u a l l y m a k e c h a n g
0003420 e s a r e a f f e c t e d ,
0003440 a n d t h e o v e r h e a
0003460 d i s s m a l l : t w o
0003500 o r t h r e e c e l l s
0003520 o f s t o r a g e f o r s
0003540 a v i n g t h e i n f o r m
0003560 a t i o n , a n d a n e x
0003600 t r a f u n c t i o n c a l
0003620 l . H o w e v e r , e v e
0003640 n t h i s s m a l l p r i
0003660 c e m a y b e t o o e x
0003700 p e n s i v e i f t h e o
0003720 p e r a t i o n i s s u f f
0003740 i c i e n t l y p r i m i t i
0003760 v e a n d r e p e t i t i v
0004000 e , i . e . , i f t h e
0004020 e x t r a o v e r h e a d m
0004040 a y s e r i o u s l y d e g
0004060 r a d e t h e o v e r a l l
0004100 p e r f o r m a n c e o f
0004120 t h e p r o g r a m . H e
0004140 n c e n o t e v e r y d e
0004160 s t r u c t i v e o p e r a t
0004200 i o n i n a p r o g r a m
0004220 s h o u l d n e c e s s a r
0004240 i l y b e u n d o a b l e ;
0004260 t h e p r o g r a m m e r
0004300 m u s t b e a l l o w e d
0004320 t o d e c i d e e a c h c
0004340 a s e i n d i v i d u a l l y
0004360 . \r \r \r { i n d e x * P R I M
0004400 A R Y * / f u n c t i o n s
0004420 } \r \r T h e r e f o r e f o r
0004440 e a c h p r i m i t i v e
0004460 d e s t r u c t i v e f u n c
0004500 t i o n , I n t e r l i s p
0004520 h a s d e f i n e d a n u
0004540 n d o a b l e v e r s i o n
0004560 w h i c h a l w a y s s a v
0004600 e s i n f o r m a t i o n .
0004620 B y c o n v e n t i o n ,
0004640 t h e n a m e o f t h e
0004660 u n d o a b l e v e r s i o n
0004700 o f a f u n c t i o n i
0004720 s t h e f u n c t i o n n
0004740 a m e , p r e c e e d e d b
0004760 y " { l i s p / } . " F
0005000 o r e x a m p l e , t h e r
0005020 e i s { f n R P L A C A }
0005040 a n d { f n / R P L A C A
0005060 } , { f n R E M P R O P }
0005100 a n d { f n / R E M P R O P
0005120 } , e t c . { i n d e x X
0005140 { N a m e F N S } { T y p
0005160 e V a r i a b l e } { T e x
0005200 t { l i s p / F N S } } }
0005220 { i n d e x * P R I M A R Y *
0005240 / F N S V a r } T h e " s
0005260 l a s h " f u n c t i o n s
0005300 t h a t a r e c u r r e n t
0005320 l y i m p l e m e n t e d c
0005340 a n b e f o u n d a s t
0005360 h e v a l u e o f { v a r
0005400 / F N S } . \r \r T h e v a r
0005420 i o u s s y s t e m p a c k
0005440 a g e s u s e t h e a p p
0005460 r o p r i a t e u n d o a b l
0005500 e f u n c t i o n s . F o
0005520 r e x a m p l e , { f n B
0005540 R E A K } u s e s { f n /
0005560 P U T D } a n d { f n / R
0005600 E M P R O P } s o a s t o
0005620 b e u n d o a b l e , a n
0005640 d D W I M u s e s { f n
0005660 / R P L A C A } a n d { f n
0005700 / R P L A C D } , w h e n
0005720 i t m a k e s a c o r r e
0005740 c t i o n . S i m i l a r l
0005760 y , t h e u s e r c a n
0006000 s i m p l y u s e t h e c
0006020 o r r e s p o n d i n g { i n
0006040 d e x / f u n c t i o n s }
0006060 { l i s p / } f u n c t i o
0006100 n i f h e w a n t s t o
0006120 m a k e a d e s t r u c t
0006140 i v e o p e r a t i o n i n
0006160 h i s o w n p r o g r a m
0006200 u n d o a b l e . W h e n
0006220 t h e { l i s p / } f u
0006240 n c t i o n i s c a l l e d
0006260 , i t w i l l s a v e t
0006300 h e { p a c o m U N D O }
0006320 i n f o r m a t i o n i n t
0006340 h e c u r r e n t e v e n t
0006360 o n t h e h i s t o r y
0006400 l i s t . \r \r T h e e f f e c
0006420 t s o f t h e f o l l o w
0006440 i n g f u n c t i o n s a r
0006460 e a l w a y s u n d o a b l
0006500 e : { f n D E F I N E } ,
0006520 { f n D E F I N E Q } , { f
0006540 n D E F C } { i n d e x D E
0006560 F C F n } ( u s e d t o
0006600 g i v e a f u n c t i o n
0006620 a c o m p i l e d c o d e
0006640 d e f i n i t i o n ) , { f n
0006660 D E F L I S T } , { f n L
0006700 O A D } , { f n S A V E D E
0006720 F } , { f n U N S A V E D E
0006740 F } , { f n B R E A K } ,
0006760 { f n U N B R E A K } , { f
0007000 n R E B R E A K } , { f n
0007020 T R A C E } , { f n B R E A
0007040 K I N } , { f n U N B R E A
0007060 K I N } , { f n C H A N G E
0007100 N A M E } , { f n E D I T F
0007120 N S } , { f n E D I T F } ,
0007140 { f n E D I T V } , { f n
0007160 E D I T P } , { f n E D I
0007200 T E } , { f n E D I T L } ,
0007220 { f n E S U B S T } , { f
0007240 n A D V I S E } , { f n U
0007260 N A D V I S E } , { f n R E
0007300 A D V I S E } , p l u s a n
0007320 y c h a n g e s c a u s e d
0007340 b y D W I M . \r \r \r { T a g
0007360 S l a s h i f y i n g T y p e
0007400 d I n F n s } \r \r T h e p r o
0007420 g r a m m e r ' s a s s i s t
0007440 a n t c a n n o t k n o w
0007460 w h e t h e r e f f i c i e n
0007500 c y a n d o v e r h e a d
0007520 a r e s e r i o u s c o n s
0007540 i d e r a t i o n s f o r t
0007560 h e e x e c u t i o n o f
0007600 a n e x p r e s s i o n i n
0007620 a u s e r { i t p r o g
0007640 r a m } , s o t h e u s e
0007660 r m u s t d e c i d e i f
0007700 h e w a n t s t h e s e
0007720 o p e r a t i o n s u n d o a
0007740 b l e b y e x p l i c i t l
0007760 y c a l l i n g { f n / M
0010000 A P C O N C } , e t c . H
0010020 o w e v e r , { i t t y p e
0010040 d - i n } e x p r e s s i o n
0010060 s r a r e l y i n v o l v e
0010100 i t e r a t i o n s o r l
0010120 e n g t h y c o m p u t a t i
0010140 o n s { i t d i r e c t l y
0010160 } . T h e r e f o r e , b
0010200 e f o r e e v a l u a t i n g
0010220 t h e u s e r i n p u t ,
0010240 t h e p r o g r a m m e r '
0010260 s a s s i s t a n t s u b s
0010300 t i t u t e s t h e c o r r
0010320 e s p o n d i n g u n d o a b
0010340 l e f u n c t i o n f o r
0010360 a n y d e s t r u c t i v e
0010400 f u n c t i o n ( u s i n g
0010420 { i n d e x L I S P X / F N
0010440 } { f n L I S P X / } , { P
0010460 a g e R e f F n L I S P X /
0010500 } ) . F o r e x a m p l e
0010520 , i f t h e u s e r t y
0010540 p e s { l i s p ( M A P C O
0010560 N C N A S D I C { e l l i p
0010600 s i s } ) } , i t i s a c
0010620 t u a l l y { l i s p ( / M
0010640 A P C O N C N A S D I C { e
0010660 l l i p s i s } ) } t h a t
0010700 i s e v a l u a t e d . O
0010720 b v i o u s l y , w i t h a
0010740 m o r e s o p h i s t i c a
0010760 t e d a n a l y s i s o f
0011000 b o t h u s e r i n p u t
0011020 a n d u s e r p r o g r a m
0011040 s , t h e d e c i s i o n
0011060 c o n c e r n i n g w h i c h
0011100 o p e r a t i o n s t o m
0011120 a k e u n d o a b l e c o u
0011140 l d b e b e t t e r a d v
0011160 i s e d . H o w e v e r ,
0011200 w e h a v e f o u n d t h
0011220 e c o n f i g u r a t i o n
0011240 d e s c r i b e d h e r e t
0011260 o b e a v e r y s a t i
0011300 s f a c t o r y o n e . T
0011320 h e u s e r p a y s a v
0011340 e r y s m a l l p r i c e
0011360 f o r b e i n g a b l e t
0011400 o u n d o w h a t h e t
0011420 y p e s i n , a n d i f
0011440 h e w i s h e s t o p r o
0011460 t e c t h i m s e l f f r o
0011500 m m a l f u n c t i o n i n g
0011520 i n h i s o w n p r o g
0011540 r a m s , h e c a n h a v
0011560 e h i s p r o g r a m e x
0011600 p l i c i t l y c a l l u n
0011620 d o a b l e f u n c t i o n s
0011640 . \r \r N o t e : T h e u s
0011660 e r c a n d e f i n e n e
0011700 w " s l a s h " f u n c t i
0011720 o n s t o b e t r a n s l
0011740 a t e d o n t y p e - i n
0011760 b y c a l l i n g { f n N
0012000 E W / F N } ( { P a g e R e f
0012020 F n N E W / F N } ) . \r \r {
0012040 n o t e S e c t i o n o n
0012060 T E S T M O D E d e l e t e d
0012100 , p e r i n s t r u c t i o
0012120 n s f r o m l m m ( s t o
0012140 r e d i n S t u f f . T E S
0012160 T M O D E ) } \r \r \r \r { B e g i
0012200 n S u b S e c U n d o i n g
0012220 O u t o f O r d e r } \r {
0012240 T i t l e U n d o i n g O u
0012260 t o f O r d e r } \r { T e x
0012300 t \r \r { T a g U n d o i n g O
0012320 u t O f O r d e r } \r \r { i n d
0012340 e x * P R I M A R Y * U n d
0012360 o i n g o u t o f o r d e
0012400 r } \r \r { f n / R P L A C A }
0012420 o p e r a t e s u n d o a b
0012440 l y b y s a v i n g ( o n
0012460 t h e h i s t o r y l i s
0012500 t ) t h e l i s t c e l l
0012520 t h a t i s t o b e c
0012540 h a n g e d a n d i t s o
0012560 r i g i n a l { f n C A R }
0012600 . U n d o i n g a { f n
0012620 / R P L A C A } s i m p l y
0012640 r e s t o r e s t h e s a
0012660 v e d { f n C A R } . T
0012700 h i s i m p l e m e n t a t i
0012720 o n c a n p r o d u c e u
0012740 n e x p e c t e d r e s u l t
0012760 s w h e n m u l t i p l e
0013000 { f n / R P L A C A } s a r
0013020 e d o n e o n t h e s a
0013040 m e l i s t c e l l , a n
0013060 d t h e n u n d o n e o u
0013100 t o f o r d e r . F o r
0013120 e x a m p l e , i f t h e
0013140 u s e r t y p e s { l i s
0013160 p ( R P L A C A F O O 1 )
0013200 } , f o l l o w e d b y {
0013220 l i s p ( R P L A C A F O O
0013240 2 ) } , t h e n u n d o e
0013260 s b o t h e v e n t s b y
0013300 u n d o i n g t h e m o s
0013320 t r e c e n t e v e n t f
0013340 i r s t , t h e n u n d o i
0013360 n g t h e o l d e r e v e
0013400 n t , { l i s p F O O } w
0013420 i l l b e r e s t o r e d
0013440 t o i t s s t a t e b e f
0013460 o r e e i t h e r { f n R
0013500 P L A C A } o p e r a t e d .
0013520 H o w e v e r i f t h e
0013540 u s e r u n d o e s t h e
0013560 f i r s t e v e n t , { i t
0013600 t h e n } t h e s e c o n
0013620 d e v e n t , { l i s p (
0013640 C A R F O O ) } w i l l b
0013660 e { l i s p 1 } , s i n c
0013700 e t h i s i s w h a t w
0013720 a s i n { f n C A R } o
0013740 f { l i s p F O O } b e f
0013760 o r e { l i s p ( R P L A C
0014000 A F O O 2 ) } w a s e x
0014020 e c u t e d . S i m i l a r
0014040 l y , i f t h e u s e r
0014060 t y p e s { l i s p ( N C O
0014100 N C 1 F O O 1 ) } , f o l
0014120 l o w e d b y { l i s p (
0014140 N C O N C 1 F O O 2 ) } ,
0014160 u n d o i n g j u s t { l i
0014200 s p ( N C O N C 1 F O O 1
0014220 ) } w i l l r e m o v e b
0014240 o t h { l i s p 1 } a n d
0014260 { l i s p 2 } f r o m {
0014300 l i s p F O O } . T h e
0014320 p r o b l e m i n b o t h
0014340 c a s e s i s t h a t t h
0014360 e t w o o p e r a t i o n s
0014400 a r e n o t " i n d e p e
0014420 n d e n t . " I n g e n e
0014440 r a l , o p e r a t i o n s
0014460 a r e a l w a y s i n d e p
0014500 e n d e n t i f t h e y a
0014520 f f e c t d i f f e r e n t
0014540 l i s t s o r d i f f e r e
0014560 n t s u b l i s t s o f t
0014600 h e s a m e l i s t . U
0014620 n d o i n g i n r e v e r s
0014640 e o r d e r o f e x e c u
0014660 t i o n , o r u n d o i n g
0014700 i n d e p e n d e n t o p e
0014720 r a t i o n s , i s a l w a
0014740 y s g u a r a n t e e d t o
0014760 d o t h e " r i g h t "
0015000 t h i n g . H o w e v e r ,
0015020 u n d o i n g d e p e n d e
0015040 n t o p e r a t i o n s o u
0015060 t o f o r d e r m a y n
0015100 o t a l w a y s h a v e t
0015120 h e p r e d i c t e d e f f
0015140 e c t . \r \r P r o p e r t y l
0015160 i s t o p e r a t i o n s ,
0015200 ( i . e . , { f n P U T P R
0015220 O P } , { f n A D D P R O P
0015240 } a n d { f n R E M P R O
0015260 P } ) a r e h a n d l e d
0015300 s p e c i a l l y , s o t h
0015320 a t o p e r a t i o n s t h
0015340 a t a f f e c t d i f f e r
0015360 e n t p r o p e r t i e s o
0015400 n t h e s a m e p r o p e
0015420 r t y l i s t a r e a l w
0015440 a y s i n d e p e n d e n t .
0015460 F o r e x a m p l e , i
0015500 f t h e u s e r t y p e s
0015520 { l i s p ( P U T P R O P
0015540 ' F O O ' B A R 1 ) } t h
0015560 e n { l i s p ( P U T P R O
0015600 P ' F O O ' B A Z 2 ) } ,
0015620 t h e n u n d o e s t h e
0015640 f i r s t e v e n t , t h
0015660 e { l i s p B A Z } p r o
0015700 p e r t y w i l l r e m a i
0015720 n , e v e n t h o u g h i
0015740 t m a y n o t h a v e b
0015760 e e n o n t h e p r o p e
0016000 r t y l i s t o f { l i s
0016020 p F O O } a t t h e t i
0016040 m e t h e f i r s t e v e
0016060 n t w a s e x e c u t e d .
0016100 \r \r } { E n d S u b S e c U
0016120 n d o i n g O u t o f O r
0016140 d e r } \r \r \r \r \r \r { B e g i n
0016160 S u b S e c S A V E S E T }
0016200 \r { T i t l e S A V E S E T }
0016220 \r { T e x t \r \r \r T y p e d - i
0016240 n { f n S E T } s a r e
0016260 m a d e u n d o a b l e b y
0016300 s u b s t i t u t i n g a
0016320 c a l l t o { f n S A V E
0016340 S E T } . { f n S E T Q }
0016360 i s m a d e u n d o a b l
0016400 e b y s u b s t i t u t i n
0016420 g { f n S A V E S E T Q } {
0016440 i n d e x S A V E S E T Q F
0016460 N } , a n d { f n S E T Q
0016500 Q } b y { f n S A V E S E
0016520 T Q Q } { i n d e x S A V E S
0016540 E T Q Q F N } , b o t h o
0016560 f w h i c h a r e i m p l
0016600 e m e n t e d i n t e r m s
0016620 o f { f n S A V E S E T }
0016640 . \r \r \r I n a d d i t i o n
0016660 t o s a v i n g e n o u g h
0016700 i n f o r m a t i o n o n
0016720 t h e h i s t o r y l i s t
0016740 t o e n a b l e u n d o i
0016760 n g , { f n S A V E S E T }
0017000 o p e r a t e s i n a m
0017020 a n n e r a n a l o g o u s
0017040 t o { f n S A V E D E F }
0017060 ( { P a g e R e f F n S A V
0017100 E D E F } ) w h e n i t r
0017120 e s e t s a t o p l e v e
0017140 l v a l u e : w h e n i
0017160 t c h a n g e s a t o p
0017200 l e v e l b i n d i n g f r
0017220 o m a v a l u e o t h e r
0017240 t h a n { i n d e x N O B
0017260 I N D L i t a t o m } { l i s
0017300 p N O B I N D } t o a n
0017320 e w v a l u e t h a t i s
0017340 n o t { f n E Q U A L }
0017360 t o t h e o l d o n e ,
0017400 { f n S A V E S E T } s a v
0017420 e s t h e o l d v a l u e
0017440 o f t h e v a r i a b l e
0017460 b e i n g s e t o n t h
0017500 e v a r i a b l e ' s p r o
0017520 p e r t y l i s t u n d e r
0017540 t h e p r o p e r t y { i
0017560 n d e x V A L U E P r o p }
0017600 { p r o p V A L U E } , a n
0017620 d p r i n t s t h e m e s
0017640 s a g e { l i s p ( { a r g
0017660 V A R I A B L E } R E S E T
0017700 ) } . T h e o l d v a l
0017720 u e c a n b e r e s t o r
0017740 e d v i a t h e f u n c t
0017760 i o n { f n U N S E T } ,
0020000 w h i c h a l s o s a v e s
0020020 t h e c u r r e n t v a l
0020040 u e ( b u t d o e s n o t
0020060 p r i n t a m e s s a g e
0020100 ) . T h u s { i n d e x
0020120 U N S E T F N } { f n U N S
0020140 E T } c a n b e u s e d
0020160 t o f l i p b a c k a n d
0020200 f o r t h b e t w e e n t
0020220 w o v a l u e s . \r \r { i n d
0020240 e x X { N a m e R E S E T }
0020260 { T y p e p r i n t e d b
0020300 y s y s t e m } \r { T e x t
0020320 { l i s p ( { a r g V A R I
0020340 A B L E } R E S E T ) } } }
0020360 \r \r \r O f c o u r s e , { i
0020400 n d e x U N D O P A C o m }
0020420 { p a c o m U N D O } c a n
0020440 b e u s e d a s l o n g
0020460 a s t h e e v e n t c o
0020500 n t a i n i n g t h i s c a
0020520 l l t o { i n d e x S A V
0020540 E S E T F N } { f n S A V E
0020560 S E T } i s s t i l l a c
0020600 t i v e . N o t e h o w e
0020620 v e r t h a t t h e o l d
0020640 v a l u e w i l l r e m a
0020660 i n o n t h e p r o p e r
0020700 t y l i s t , a n d t h e
0020720 r e f o r e b e r e c o v e
0020740 r a b l e v i a { i n d e x
0020760 U N S E T F N } { f n U N
0021000 S E T } , e v e n a f t e r
0021020 t h e o r i g i n a l e v
0021040 e n t h a s b e e n f o r
0021060 g o t t e n . \r \r \r { i n d e x
0021100 R P A Q F N } { f n R P A
0021120 Q } a n d { i n d e x R P
0021140 A Q Q F N } { f n R P A Q Q
0021160 } a r e i m p l e m e n t e
0021200 d v i a c a l l s t o {
0021220 f n S A V E S E T } . T h
0021240 u s o l d v a l u e s w i
0021260 l l b e s a v e d a n d
0021300 m e s s a g e s p r i n t e d
0021320 f o r a n y v a r i a b l
0021340 e s t h a t a r e r e s e
0021360 t a s t h e r e s u l t
0021400 o f l o a d i n g a f i l
0021420 e . \r \r \r F o r t o p l e v
0021440 e l v a r i a b l e s , { i
0021460 n d e x S A V E S E T F N }
0021500 { f n S A V E S E T } a l s
0021520 o a d d s t h e v a r i a
0021540 b l e t o t h e a p p r o
0021560 p r i a t e s p e l l i n g
0021600 l i s t , t h e r e b y n o
0021620 t i c i n g v a r i a b l e s
0021640 s e t i n f i l e s v i
0021660 a { f n R P A Q } o r {
0021700 f n R P A Q Q } , a s w e
0021720 l l a s t h o s e s e t
0021740 v i a t y p e - i n . \r \r \r \r
0021760 { F n D e f { F n N a m e S
0022000 A V E S E T } { F n A r g s
0022020 N A M E V A L U E T O P F L
0022040 G F L G } \r { T e x t \r A n
0022060 u n d o a b l e { f n S E T
0022100 } . { f n S A V E S E T }
0022120 s c a n s t h e s t a c k
0022140 l o o k i n g f o r t h e
0022160 l a s t b i n d i n g o f
0022200 { a r g N A M E } , s e t
0022220 s { a r g N A M E } t o
0022240 { a r g V A L U E } , a n d
0022260 r e t u r n s { a r g V A
0022300 L U E } . \r \r I f t h e b i
0022320 n d i n g c h a n g e d w a
0022340 s a t o p l e v e l b i
0022360 n d i n g , { a r g N A M E
0022400 } i s a d d e d t o t h
0022420 e s p e l l i n g l i s t
0022440 { i n d e x S P E L L I N G S
0022460 3 V a r } { v a r S P E L L
0022500 I N G S 3 } ( s e e { P a g
0022520 e R e f V a r S P E L L I N
0022540 G S 3 } ) . F u r t h e r m
0022560 o r e , i f t h e o l d
0022600 v a l u e w a s n o t { i
0022620 n d e x N O B I N D L i t a
0022640 t o m } { l i s p N O B I N D
0022660 } , a n d w a s a l s o
0022700 n o t { f n E Q U A L } t
0022720 o t h e n e w v a l u e ,
0022740 { f n S A V E S E T } c a
0022760 l l s t h e f i l e p a c
0023000 k a g e t o u p d a t e t
0023020 h e n e c e s s a r y f i l
0023040 e r e c o r d s . T h e n
0023060 , i f { i n d e x D F N F
0023100 L G V a r } { v a r D F N F
0023120 L G } i s n o t e q u a l
0023140 t o { l i s p T } , { f
0023160 n S A V E S E T } p r i n t
0023200 s { l i s p ( { a r g N A
0023220 M E } R E S E T ) } , a n d
0023240 s a v e s t h e o l d v
0023260 a l u e o n t h e p r o p
0023300 e r t y l i s t o f { a r
0023320 g N A M E } , u n d e r t
0023340 h e p r o p e r t y { i n d
0023360 e x V A L U E P r o p } { p
0023400 r o p V A L U E } . \r \r \r I f
0023420 { a r g T O P F L G } = { l
0023440 i s p T } , { i n d e x S
0023460 A V E S E T F N } { f n S A
0023500 V E S E T } o p e r a t e s
0023520 a s a b o v e e x c e p t
0023540 t h a t i t a l w a y s u
0023560 s e s { a r g N A M E } ' s
0023600 t o p - l e v e l v a l u e
0023620 c e l l . W h e n { a r
0023640 g T O P F L G } i s { l i
0023660 s p T } , a n d { i n d e
0023700 x D F N F L G V a r } { v a
0023720 r D F N F L G } i s { i n
0023740 d e x A L L P R O P L i t a
0023760 t o m } { l i s p A L L P R O
0024000 P } a n d t h e o l d v
0024020 a l u e w a s n o t { i n
0024040 d e x N O B I N D L i t a t
0024060 o m } { l i s p N O B I N D }
0024100 , { f n S A V E S E T } s
0024120 i m p l y s t o r e s { a r
0024140 g V A L U E } o n t h e
0024160 p r o p e r t y l i s t o f
0024200 { a r g N A M E } u n d e
0024220 r t h e p r o p e r t y {
0024240 i n d e x V A L U E P r o p
0024260 } { p r o p V A L U E } , a
0024300 n d r e t u r n s { a r g
0024320 V A L U E } . T h i s o p
0024340 t i o n i s u s e d f o r
0024360 l o a d i n g f i l e s w
0024400 i t h o u t d i s t u r b i n
0024420 g t h e c u r r e n t v a
0024440 l u e o f v a r i a b l e s
0024460 ( s e e { P a g e R e f V
0024500 a r D F N F L G } ) . \r \r I f
0024520 { a r g F L G } = { l i s p
0024540 N O P R I N T } , { i n d e x
0024560 N O P R I N T L i t a t o m
0024600 } { f n S A V E S E T } s
0024620 a v e s t h e o l d v a l
0024640 u e , b u t d o e s n o t
0024660 p r i n t t h e m e s s a
0024700 g e . T h i s o p t i o n
0024720 i s u s e d b y { f n
0024740 U N S E T } . \r \r I f { a r g
0024760 F L G } = { l i s p N O S A
0025000 V E } , { i n d e x N O S A V
0025020 E L i t a t o m } { f n S
0025040 A V E S E T } d o e s { i t
0025060 n o t } s a v e t h e o
0025100 l d v a l u e o n t h e
0025120 p r o p e r t y l i s t , n
0025140 o r d o e s i t a d d {
0025160 a r g N A M E } t o { i n
0025200 d e x S P E L L I N G S 3 V
0025220 a r } { v a r S P E L L I N G
0025240 S 3 } . H o w e v e r , t
0025260 h e c a l l t o { i n d e
0025300 x S A V E S E T F N } { f n
0025320 S A V E S E T } i s s t i
0025340 l l u n d o a b l e . T h
0025360 i s o p t i o n i s u s e
0025400 d b y { f n / S E T } . \r
0025420 \r I f { a r g F L G } = { l
0025440 i s p N O S T A C K U N D O }
0025460 , { i n d e x N O S T A C K U
0025500 N D O L i t a t o m } { f n
0025520 S A V E S E T } i s u n d
0025540 o a b l e o n l y i f t h
0025560 e b i n d i n g b e i n g
0025600 c h a n g e d i s a t o p
0025620 - l e v e l b i n d i n g ,
0025640 i . e . t h i s s a y s w
0025660 h e n r e s e t t i n g a
0025700 v a r i a b l e t h a t h a
0025720 s b e e n r e b o u n d ,
0025740 d o n ' t b o t h e r t o
0025760 m a k e i t u n d o a b l e
0026000 . \r \r { n o t e s y n o n y m
0026020 s f o r F L G ? : \r ( c h
0026040 e c k t h e s e , t h a y
0026060 m a y h a v e o t h e r m
0026100 e a n i n g s ) \r N O U N D O
0026120 < - > N O S T A C K U N D O \r
0026140 N O P R O P S A V E < - > N
0026160 O S A V E } \r } } \r \r \r \r { F n
0026200 D e f { F n N a m e U N S E
0026220 T } { F n A r g s N A M E }
0026240 \r { T e x t \r I f { a r g N
0026260 A M E } d o e s n o t c o
0026300 n t a i n a p r o p e r t y
0026320 { i n d e x V A L U E P r
0026340 o p } { p r o p V A L U E } ,
0026360 { f n U N S E T } g e n e
0026400 r a t e s a n e r r o r . {
0026420 i n d e x N O V A L U E S
0026440 A V E D : E r r o r } O t
0026460 h e r w i s e { f n U N S E
0026500 T } c a l l s { f n S A V
0026520 E S E T } w i t h { a r g
0026540 N A M E } , t h e p r o p e
0026560 r t y v a l u e , { a r g
0026600 T O P F L G } = { l i s p T }
0026620 , a n d { a r g F L G } =
0026640 { l i s p N O P R I N T } . \r
0026660 } } \r \r } { E n d S u b S e c
0026700 S A V E S E T } \r \r \r \r \r { B
0026720 e g i n S u b S e c U N D O
0026740 N L S E T Q a n d R E S E T
0026760 U N D O } \r { T i t l e U N D
0027000 O N L S E T Q a n d R E S E
0027020 T U N D O } \r { T e x t \r \r T h
0027040 e f u n c t i o n { f n U
0027060 N D O N L S E T Q } p r o v i
0027100 d e s a l i m i t e d f o
0027120 r m o f b a c k t r a c k i
0027140 n g : i f a n e r r o r
0027160 o c c u r s u n d e r t h
0027200 e { f n U N D O N L S E T Q
0027220 } , a l l u n d o a b l e
0027240 s i d e e f f e c t s e x e
0027260 c u t e d u n d e r t h e
0027300 { f n U N D O N L S E T Q }
0027320 a r e u n d o n e . { f n
0027340 R E S E T U N D O } , u s e
0027360 d i n c o n j u n c t i o n
0027400 w i t h { f n R E S E T L
0027420 S T } a n d { f n R E S E
0027440 T S A V E } ( { P a g e R e f
0027460 F n R E S E T S A V E } ) ,
0027500 p r o v i d e s a m o r e
0027520 g e n e r a l u n d o c a
0027540 p a b i l i t y w h e r e t
0027560 h e u s e r c a n s p e c
0027600 i f y t h a t t h e s i d
0027620 e e f f e c t s b e u n d
0027640 o n e a f t e r t h e s p
0027660 e c i f i e d c o m p u t a t
0027700 i o n f i n i s h e s , i s
0027720 a b o r t e d b y a n e
0027740 r r o r , o r b y a c o
0027760 n t r o l - D . \r \r \r \r { F n D
0030000 e f { F n N a m e U N D O N
0030020 L S E T Q } { F n A r g s U
0030040 N D O F O R M { a n o n a r g
0030060 } } \r { T y p e N L A M B D A
0030100 } \r { T e x t \r A n n l a m b
0030120 d a f u n c t i o n s i m i
0030140 l a r t o { i n d e x N L
0030160 S E T Q F N } { f n N L S E
0030200 T Q } ( { P a g e R e f F n
0030220 N L S E T Q } ) . { f n
0030240 U N D O N L S E T Q } e v a l
0030260 u a t e s { a r g U N D O F
0030300 O R M } , a n d i f n o
0030320 e r r o r o c c u r s d u r
0030340 i n g t h e e v a l u a t i
0030360 o n , r e t u r n s { l i s
0030400 p ( L I S T ( E V A L { a
0030420 r g U N D O F O R M } ) ) }
0030440 a n d p a s s e s t h e u
0030460 n d o i n f o r m a t i o n
0030500 f r o m { a r g U N D O F O
0030520 R M } ( i f a n y ) u p w
0030540 a r d s . I f a n e r r
0030560 o r d o e s o c c u r , t
0030600 h e { f n U N D O N L S E T
0030620 Q } r e t u r n s { l i s p
0030640 N I L } , a n d a n y u
0030660 n d o a b l e c h a n g e s
0030700 m a d e d u r i n g t h e
0030720 e v a l u a t i o n o f { a
0030740 r g U N D O F O R M } a r e
0030760 u n d o n e . \r \r \r A n y u
0031000 n d o i n f o r m a t i o n
0031020 i s s t o r e d d i r e c t
0031040 l y o n t h e h i s t o r
0031060 y e v e n t ( i f { i n d
0031100 e x L I S P X H I S T V a r
0031120 } { v a r L I S P X H I S T }
0031140 i s n o t { l i s p N I
0031160 L } ) , s o t h a t i f
0031200 t h e u s e r c o n t r o l
0031220 - D ' s o u t o f t h e
0031240 { f n U N D O N L S E T Q } ,
0031260 t h e e v e n t i s s t
0031300 i l l u n d o a b l e . \r \r \r
0031320 { f n U N D O N L S E T Q }
0031340 w i l l o p e r a t e c o r
0031360 r e c t l y i f { i n d e x
0031400 # U N D O S A V E S V a r }
0031420 { v a r # U N D O S A V E S }
0031440 i s o r h a s b e e n
0031460 e x c e e d e d f o r t h i
0031500 s e v e n t , o r i s e
0031520 x c e e d e d w h i l e u n
0031540 d e r t h e s c o p e o f
0031560 t h e { f n U N D O N L S
0031600 E T Q } . \r \r \r N o t e : C
0031620 a u t i o n m u s t b e e
0031640 x e r c i s e d i n u s i n
0031660 g c o r o u t i n e s o r
0031700 o t h e r n o n - s t a n d a
0031720 r d m e a n s o f e x i t
0031740 i n g w h i l e u n d e r
0031760 a n { f n U N D O N L S E T
0032000 Q } . S e e d i s c u s s
0032020 i o n i n { P a g e R e f
0032040 F n R E S E T L S T } . \r } }
0032060 \r \r \r \r { F n D e f { F n N a
0032100 m e R E S E T U N D O } { F
0032120 n A r g s X S T O P F L G }
0032140 \r { T e x t \r F o r u s e i
0032160 n c o n j u n c t i o n w i
0032200 t h { f n R E S E T L S T }
0032220 ( { P a g e R e f F n R E
0032240 S E T L S T } ) . { l i s p
0032260 ( R E S E T U N D O ) } i n
0032300 i t i a l i z e s t h e s a
0032320 v i n g o f u n d o i n f
0032340 o r m a t i o n a n d r e t
0032360 u r n s a v a l u e w h i
0032400 c h w h e n g i v e n b a
0032420 c k t o { f n R E S E T U
0032440 N D O } u n d o e s t h e
0032460 i n t e r v e n i n g s i d e
0032500 e f f e c t s . F o r e
0032520 x a m p l e , { l i s p ( R
0032540 E S E T L S T ( R E S E T S A
0032560 V E ( R E S E T U N D O ) )
0032600 . { a r g F O R M S } ) }
0032620 w i l l u n d o t h e s i
0032640 d e e f f e c t s o f { a
0032660 r g F O R M S } o n n o r
0032700 m a l e x i t , o r i f
0032720 a n e r r o r o c c u r s
0032740 o r a c o n t r o l - D i
0032760 s t y p e d . \r \r \r I f { a
0033000 r g S T O P F L G } = { l i s
0033020 p T } , { f n R E S E T U
0033040 N D O } s t o p s a c c u m
0033060 u l a t i n g u n d o i n f
0033100 o r m a t i o n i t i s s
0033120 a v i n g o n { a r g X }
0033140 . N o t e t h a t t h i
0033160 s h a s n o b e a r i n g
0033200 o n t h e s a v i n g o
0033220 f u n d o i n f o r m a t i
0033240 o n o n h i g h e r { f n
0033260 R E S E T U N D O } ' s , o
0033300 r o n b e i n g a b l e
0033320 t o u n d o t h e e n t i
0033340 r e e v e n t . \r \r F o r e
0033360 x a m p l e , \r \r { l i s p c o
0033400 d e \r ( R E S E T L S T \r
0033420 ( S E T Q F O O ( R E S E T
0033440 U N D O ) ) \r ( R E S E T
0033460 S A V E N I L ( L I S T '
0033500 R E S E T U N D O F O O ) ) \r
0033520 ( A D V I S E { e l l i
0033540 p s i s } ) \r ( R E S E T
0033560 U N D O F O O T ) \r .
0033600 { a r g F O R M S } ) } \r \r
0033620 \r w o u l d c a u s e t h e
0033640 a d v i c e t o b e u n
0033660 d o n e , b u t { i t n o
0033700 t } a n y o f t h e s i
0033720 d e e f f e c t s i n { a
0033740 r g F O R M S } . \r } } \r \r \r
0033760 } { E n d S u b S e c U N D
0034000 O N L S E T Q a n d R E S E
0034020 T U N D O } \r \r \r } { E n d S
0034040 u b S e c U n d o i n g } \r \r
0034060 \r \r \r \r \r { B e g i n S u b S
0034100 e c F o r m a t a n d U s
0034120 e o f t h e H i s t o r y
0034140 L i s t } \r { T i t l e F o
0034160 r m a t a n d U s e o f
0034200 t h e H i s t o r y L i s t
0034220 } \r { T e x t \r \r \r { T a g H
0034240 i s t o r y L i s t F o r m a t
0034260 } \r \r { i n d e x H i s t o r
0034300 y l i s t s } \r { i n d e x
0034320 * P R I M A R Y * H i s t o r
0034340 y l i s t f o r m a t } \r \r
0034360 \r T h e s y s t e m c u r r
0034400 e n t l y u s e s t h r e e
0034420 h i s t o r y l i s t s ,
0034440 { i n d e x * P R I M A R Y *
0034460 L I S P X H I S T O R Y V a
0034500 r } { v a r L I S P X H I S T
0034520 O R Y } f o r t h e t o p
0034540 - l e v e l I n t e r l i s p
0034560 e x e c u t i v e , { i n d
0034600 e x E D I T H I S T O R Y V
0034620 a r } { v a r E D I T H I S T
0034640 O R Y } f o r t h e e d i
0034660 t o r s , a n d { i n d e x
0034700 * P R I M A R Y * A R C H I
0034720 V E L S T V a r } { v a r A
0034740 R C H I V E L S T } f o r a
0034760 r c h i v i n g e v e n t s
0035000 ( s e e { P a g e R e f P A
0035020 C o m A R C H I V E } ) .
0035040 A l l h i s t o r y l i s t
0035060 s h a v e t h e s a m e
0035100 f o r m a t , u s e t h e
0035120 s a m e f u n c t i o n s ,
0035140 { i n d e x H I S T O R Y S A
0035160 V E F N } { f n H I S T O R
0035200 Y S A V E } , f o r r e c o
0035220 r d i n g e v e n t s , a n
0035240 d u s e t h e s a m e s
0035260 e t o f f u n c t i o n s
0035300 f o r i m p l e m e n t i n g
0035320 c o m m a n d s t h a t r
0035340 e f e r t o t h e h i s t
0035360 o r y l i s t , e . g . ,
0035400 { f n H I S T O R Y F I N D }
0035420 , { f n P R I N T H I S T O
0035440 R Y } , { f n U N D O S A V
0035460 E } , e t c . \r \r \r E a c h
0035500 h i s t o r y l i s t i s
0035520 a l i s t o f t h e f o
0035540 r m { l i s p ( { a r g L
0035560 } { a r g E V E N T # } {
0035600 a r g S I Z E } { a r g M
0035620 O D } ) } , w h e r e { a r
0035640 g L } i s t h e l i s t
0035660 o f e v e n t s w i t h
0035700 t h e m o s t r e c e n t
0035720 e v e n t f i r s t , { a r
0035740 g E V E N T # } i s t h e
0035760 e v e n t n u m b e r f o
0036000 r t h e m o s t r e c e n
0036020 t e v e n t o n { a r g
0036040 L } , { a r g S I Z E } i
0036060 s t h e s i z e o f t h
0036100 e t i m e - s l i c e ( b e
0036120 l o w ) , i . e . , t h e
0036140 m a x i m u m l e n g t h o
0036160 f { a r g L } , a n d {
0036200 a r g M O D } i s t h e
0036220 h i g h e s t p o s s i b l e
0036240 e v e n t n u m b e r .
0036260 { v a r L I S P X H I S T O R
0036300 Y } a n d { v a r E D I T
0036320 H I S T O R Y } a r e b o t
0036340 h i n i t i a l i z e d t o
0036360 { l i s p ( N I L 0 1 0
0036400 0 1 0 0 ) } . S e t t i n
0036420 g { v a r L I S P X H I S T
0036440 O R Y } o r { v a r E D I
0036460 T H I S T O R Y } t o { l i
0036500 s p N I L } d i s a b l e s
0036520 a l l h i s t o r y f e a
0036540 t u r e s , s o { v a r L
0036560 I S P X H I S T O R Y } a n d
0036600 { v a r E D I T H I S T O R
0036620 Y } a c t l i k e f l a g
0036640 s a s w e l l a s r e p
0036660 o s i t o r i e s o f e v e
0036700 n t s . \r \r N o t e : O n e
0036720 o f t h e r e a s o n s
0036740 w h y u s e r s m a y d i
0036760 s a b l e t h e h i s t o r
0037000 y l i s t f a c i l i t y
0037020 i s t o a l l o w t h e
0037040 g a r b a g e c o l l e c t o
0037060 r t o r e c l a i m o b j
0037100 e c t s s t o r e d o n t
0037120 h e h i s t o r y l i s t .
0037140 S i m p l y s e t t i n g
0037160 { v a r L I S P X H I S T O
0037200 R Y } t o { l i s p N I L
0037220 } w i l l n o t n e c e s
0037240 s a r i l y r e m o v e a l
0037260 l p o i n t e r s t o t h
0037300 e h i s t o r y l i s t .
0037320 { f n G A I N S P A C E }
0037340 ( { P a g e R e f F n G A I
0037360 N S P A C E } ) i s a u s
0037400 e f u l f u n c t i o n w h
0037420 e n t r y i n g t o r e c
0037440 l a i m m e m o r y s p a c
0037460 e . \r \r { T a g T i m e S l i
0037500 c e } \r { i n d e x * P R I M
0037520 A R Y * T i m e - s l i c e
0037540 o f h i s t o r y l i s t }
0037560 \r \r E a c h h i s t o r y l
0037600 i s t h a s a m a x i m u
0037620 m l e n g t h , c a l l e d
0037640 i t s " t i m e - s l i c e
0037660 . " A s n e w e v e n t
0037700 s o c c u r , e x i s t i n
0037720 g e v e n t s a r e a g e
0037740 d , a n d t h e o l d e s
0037760 t e v e n t s a r e " f o
0040000 r g o t t e n . " F o r e
0040020 f f i c i e n c y , t h e s
0040040 t o r a g e u s e d t o r
0040060 e p r e s e n t t h e f o r
0040100 g o t t e n e v e n t i s
0040120 r e u s e d i n t h e r e
0040140 p r e s e n t a t i o n o f
0040160 t h e n e w e v e n t , s
0040200 o t h e h i s t o r y l i
0040220 s t i s a c t u a l l y a
0040240 r i n g b u f f e r . T
0040260 h e t i m e - s l i c e o f
0040300 a h i s t o r y l i s t
0040320 c a n b e c h a n g e d w
0040340 i t h t h e f u n c t i o n
0040360 { i n d e x C H A N G E S L
0040400 I C E F N } { f n C H A N G
0040420 E S L I C E } ( { P a g e R e
0040440 f F n C H A N G E S L I C E
0040460 } ) . L a r g e r t i m e
0040500 - s l i c e s e n a b l e l
0040520 o n g e r " m e m o r y s p
0040540 a n s , " b u t t i e u p
0040560 c o r r e s p o n d i n g l y
0040600 g r e a t e r a m o u n t s
0040620 o f s t o r a g e . S i
0040640 n c e t h e u s e r s e l
0040660 d o m n e e d s r e a l l y
0040700 " a n c i e n t h i s t o r
0040720 y , " a n d a f a c i l i
0040740 t y i s p r o v i d e d f
0040760 o r s a v i n g a n d r e
0041000 m e m b e r i n g s e l e c t
0041020 e d e v e n t s ( s e e {
0041040 p a c o m N A M E } a n d
0041060 { p a c o m R E T R I E V E }
0041100 , { P a g e R e f P A C o m
0041120 N A M E } ) , a r e l a t
0041140 i v e l y s m a l l t i m e
0041160 - s l i c e s u c h a s 3
0041200 0 e v e n t s i s m o r e
0041220 t h a n a d e q u a t e ,
0041240 a l t h o u g h s o m e u s
0041260 e r s p r e f e r t o s e
0041300 t t h e t i m e - s l i c e
0041320 a s l a r g e a s 1 0 0
0041340 e v e n t s . \r \r { T a g E
0041360 v e n t N u m b e r s } \r { i n
0041400 d e x * P R I M A R Y * E v
0041420 e n t n u m b e r s } \r \r I f
0041440 { v a r P R O M P T # F L G
0041460 } ( { P a g e R e f V a r
0041500 P R O M P T # F L G } ) i s
0041520 s e t t o { l i s p T } ,
0041540 a n " e v e n t n u m b e
0041560 r " w i l l b e p r i n t
0041600 e d b e f o r e e a c h p
0041620 r o m p t . M o r e r e c
0041640 e n t e v e n t s h a v e
0041660 h i g h e r n u m b e r s .
0041700 W h e n t h e e v e n t
0041720 n u m b e r o f t h e c u
0041740 r r e n t e v e n t i s 1
0041760 0 0 , t h e n e x t e v e
0042000 n t w i l l b e g i v e n
0042020 n u m b e r 1 . I f t
0042040 h e t i m e - s l i c e i s
0042060 g r e a t e r t h a n 1 0
0042100 0 , t h e " r o l l - o v e
0042120 r " o c c u r s a t t h e
0042140 n e x t h i g h e s t h u
0042160 n d r e d , s o t h a t a
0042200 t n o t i m e w i l l t
0042220 w o e v e n t s e v e r h
0042240 a v e t h e s a m e e v e
0042260 n t n u m b e r . F o r
0042300 e x a m p l e , i f t h e
0042320 t i m e - s l i c e i s 1 5
0042340 0 , e v e n t n u m b e r
0042360 1 w i l l f o l l o w e v
0042400 e n t n u m b e r 2 0 0 . \r
0042420 \r E a c h i n d i v i d u a l
0042440 e v e n t o n { a r g L
0042460 } i s a l i s t o f t
0042500 h e f o r m { l i s p ( {
0042520 a r g I N P U T } { a r g
0042540 I D } { a r g V A L U E }
0042560 . { a r g P R O P S } ) } .
0042600 { a r g I D } i s t h
0042620 e p r o m p t c h a r a c t
0042640 e r f o r t h i s e v e n
0042660 t , e . g . , { l i s p _
0042700 } , { l i s p : } , { l i
0042720 s p * } , e t c . { a r
0042740 g V A L U E } i s t h e
0042760 v a l u e o f t h e e v e
0043000 n t , a n d i s i n i t i
0043020 a l i z e d t o { i n d e x
0043040 b e l l ( i n h i s t o
0043060 r y e v e n t ) } b e l l .
0043100 O n { i n d e x E D I T H
0043120 I S T O R Y V a r } { v a r
0043140 E D I T H I S T O R Y } , t h
0043160 i s f i e l d i s u s e d
0043200 t o s a v e t h e s i d
0043220 e e f f e c t s o f e a c
0043240 h c o m m a n d ( s e e {
0043260 P a g e R e f T a g E d i t
0043300 o r A n d P A } ) . { a r g
0043320 P R O P S } i s a p r o
0043340 p e r t y l i s t u s e d
0043360 t o a s s o c i a t e o t h
0043400 e r i n f o r m a t i o n w
0043420 i t h t h e e v e n t ( d
0043440 e s c r i b e d b e l o w ) .
0043460 \r \r \r { a r g I N P U T } i
0043500 s t h e i n p u t s e q u
0043520 e n c e f o r t h e e v e
0043540 n t . N o r m a l l y , t
0043560 h i s i s j u s t t h e
0043600 i n p u t t h a t t h e u
0043620 s e r t y p e d - i n . F
0043640 o r a n A P P L Y - f o r m
0043660 a t i n p u t ( s e e { P
0043700 a g e R e f T e r m A P P L
0043720 Y - f o r m a t i n p u t } )
0043740 , t h i s i s a l i s t
0043760 c o n s i s t i n g o f t
0044000 w o e x p r e s s i o n s ;
0044020 f o r a n E V A L - f o r m
0044040 a t i n p u t , t h i s i
0044060 s a l i s t o f j u s t
0044100 o n e e x p r e s s i o n ;
0044120 f o r a n i n p u t e n
0044140 t e r e d a s l i s t o f
0044160 a t o m s , { a r g I N P
0044200 U T } i s s i m p l y t h
0044220 a t l i s t . F o r e x
0044240 a m p l e , \r \r { B e g i n L
0044260 a b e l e d L i s t f o r m a
0044300 t o f I N P U T i n e v
0044320 e n t } \r \r { L a b e l U s e
0044340 r I n p u t } \t \t \t { T e x t
0044360 { a r g I N P U T } i s :
0044400 } \r \r { L a b e l { l i s p
0044420 P L U S [ 1 1 ] } } \t \t { T e
0044440 x t { l i s p ( P L U S (
0044460 1 1 ) ) } } \r \r { L a b e l
0044500 { l i s p ( P L U S 1 1 )
0044520 } } \t \t { T e x t { l i s p
0044540 ( ( P L U S 1 1 ) ) } } \r \r
0044560 { L a b e l { l i s p P L U
0044600 S 1 1 { c r } } } \t { T e x
0044620 t { l i s p ( P L U S 1
0044640 1 ) } } \r \r { E n d L a b e l
0044660 e d L i s t f o r m a t o f
0044700 I N P U T i n e v e n t }
0044720 \r \r \r \r \r { T a g P s e u d o
0044740 C a r r i a g e R e t u r n } \r
0044760 { i n d e x * P R I M A R Y *
0045000 P s e u d o - c a r r i a g e
0045020 r e t u r n } \r \r I f t h e
0045040 u s e r t y p e s i n a
0045060 p r o g r a m m e r ' s a s
0045100 s i s t a n t c o m m a n d
0045120 t h a t " u n r e a d s " a
0045140 n d r e e x e c u t e s o t
0045160 h e r e v e n t s ( { p a c
0045200 o m R E D O } , { p a c o m
0045220 U S E } , { i n d e x U S E
0045240 P A C o m } , e t c . ) ,
0045260 { a r g I N P U T } c o n t
0045300 a i n s a " s e q u e n c e
0045320 " o f t h e i n p u t s
0045340 f r o m t h e r e d o n e
0045360 e v e n t s . S p e c i f i
0045400 c a l l y , t h e { a r g
0045420 I N P U T } f i e l d s f r
0045440 o m t h e s p e c i f i e d
0045460 e v e n t s a r e c o n c
0045500 a t e n a t e d i n t o a
0045520 s i n g l e l i s t , s e p
0045540 e r a t e d b y s p e c i a
0045560 l m a r k e r s c a l l e d
0045600 " p s e u d o - c a r r i a g
0045620 e r e t u r n s , " w h i c
0045640 h p r i n t o u t a s t
0045660 h e s t r i n g { l i s p
0045700 " < c . r . > " } . W h e n
0045720 t h e r e s u l t o f t
0045740 h i s c o n c a t e n a t i o
0045760 n i s " r e r e a d , " t
0046000 h e p s e u d o - c a r r i a
0046020 g e - r e t u r n s a r e t
0046040 r e a t e d b y { i n d e x
0046060 L I S P X R E A D F N } { f
0046100 n L I S P X R E A D } a n d
0046120 { i n d e x R E A D L I N E
0046140 F N } { f n R E A D L I N E
0046160 } e x a c t l y a s r e a
0046200 l c a r r i a g e r e t u r
0046220 n s , i . e . , t h e y s
0046240 e r v e t o d i s t i n g u
0046260 i s h b e t w e e n A P P L
0046300 Y - f o r m a t a n d E V A
0046320 L - f o r m a t i n p u t s
0046340 t o { i n d e x L I S P X
0046360 F N } { f n L I S P X } , a
0046400 n d t o d e l i m i t l i
0046420 n e c o m m a n d s t o t
0046440 h e e d i t o r . \r \r N o t e
0046460 : T h e v a l u e o f
0046500 t h e v a r i a b l e { v a
0046520 r H I S T S T R 0 } { i n d e
0046540 x * P R I M A R Y * H I S T
0046560 S T R 0 V a r } i s u s e
0046600 d t o r e p r e s e n t a
0046620 p s e u d o - c a r r i a g e
0046640 r e t u r n . T h i s i
0046660 s i n i t i a l l y t h e
0046700 s t r i n g { i n d e x * P
0046720 R I M A R Y * " < c . r . > "
0046740 ( i n h i s t o r y c o m
0046760 m a n d s ) } { l i s p " < c
0047000 . r . > " } . N o t e t h
0047020 a t t h e f u n c t i o n s
0047040 t h a t r e c o g n i z e
0047060 p s e u d o - c a r r i a g e
0047100 r e t u r n s c o m p a r e
0047120 t h e m t o { v a r H I S
0047140 T S T R 0 } u s i n g { f n
0047160 E Q } , s o t h i s m a
0047200 r k e r w i l l n e v e r
0047220 b e c o n f u s e d w i t h
0047240 a s t r i n g t h a t w
0047260 a s t y p e d i n b y t
0047300 h e u s e r . \r \r T h e s a
0047320 m e c o n v e n t i o n i s
0047340 u s e d f o r r e p r e s
0047360 e n t i n g m u l t i p l e
0047400 i n p u t s w h e n a { p
0047420 a c o m U S E } c o m m a n
0047440 d i n v o l v e s s e q u e
0047460 n t i a l s u b s t i t u t i
0047500 o n s . F o r e x a m p l
0047520 e , i f t h e u s e r t
0047540 y p e s { l i s p G E T D (
0047560 F O O ) } a n d t h e n {
0047600 l i s p U S E F I E F U M
0047620 F O R F O O } , t h e i
0047640 n p u t s e q u e n c e t h
0047660 a t w i l l b e c o n s t
0047700 r u c t e d i s { l i s p
0047720 ( G E T D ( F I E ) " < c .
0047740 r . > " G E T D ( F U M ) )
0047760 } , w h i c h i s t h e
0050000 r e s u l t o f s u b s t i
0050020 t u t i n g { l i s p F I E
0050040 } f o r { l i s p F O O }
0050060 i n { l i s p ( G E T D
0050100 ( F O O ) ) } c o n c a t e n
0050120 a t e d w i t h t h e r e
0050140 s u l t o f s u b s t i t u
0050160 t i n g { l i s p F U M }
0050200 f o r { l i s p F O O } i
0050220 n { l i s p ( G E T D ( F
0050240 O O ) ) } . \r \r \r N o t e t h
0050260 a t o n c e a m u l t i p
0050300 l e i n p u t h a s b e e
0050320 n e n t e r e d a s t h e
0050340 i n p u t p o r t i o n o
0050360 f a n e w e v e n t , t
0050400 h a t e v e n t c a n b e
0050420 t r e a t e d e x a c t l y
0050440 t h e s a m e a s o n e
0050460 r e s u l t i n g f r o m
0050500 t y p e - i n . I n o t h
0050520 e r w o r d s , n o s p e
0050540 c i a l c h e c k s h a v e
0050560 t o b e m a d e w h e n
0050600 { i t r e f e r e n c i n g
0050620 } a n e v e n t , t o s
0050640 e e i f i t i s s i m p
0050660 l e o r m u l t i p l e .
0050700 T h i s i m p l e m e n t a
0050720 t i o n p e r m i t s a n
0050740 e v e n t s p e c i f i c a t
0050760 i o n t o r e f e r t o
0051000 a s i n g l e s i m p l e
0051020 e v e n t , o r t o s e v
0051040 e r a l e v e n t s , o r
0051060 t o a s i n g l e e v e n
0051100 t o r i g i n a l l y c o n
0051120 s t r u c t e d f r o m s e
0051140 v e r a l e v e n t s ( w h
0051160 i c h m a y t h e m s e l v
0051200 e s h a v e b e e n m u l
0051220 t i p l e i n p u t e v e n
0051240 t s , e t c . ) w i t h o u
0051260 t h a v i n g t o t r e a
0051300 t e a c h c a s e s e p a
0051320 r a t e l y . \r \r \r { p a c o m
0051340 R E D O } , { i n d e x R E
0051360 D O P A C o m } { p a c o m
0051400 R E T R Y } , { i n d e x R
0051420 E T R Y P A C o m } { p a c
0051440 o m U S E } , { i n d e x U
0051460 S E P A C o m } { p a c o m
0051500 . . . } , { i n d e x . . .
0051520 P A C o m } a n d { i n d
0051540 e x F I X P A C o m } { p a
0051560 c o m F I X } c o m m a n d
0051600 s , i . e . , t h o s e c
0051620 o m m a n d s t h a t r e e
0051640 x e c u t e p r e v i o u s
0051660 e v e n t s , a r e n o t
0051700 s t o r e d a s i n p u t s
0051720 , b e c a u s e t h e i n
0051740 p u t p o r t i o n f o r
0051760 t h e s e e v e n t s a r e
0052000 t h e e x p r e s s i o n s
0052020 t o b e " r e r e a d " .
0052040 T h e h i s t o r y c o
0052060 m m a n d s { i n d e x U N
0052100 D O P A C o m } { p a c o m
0052120 U N D O } , { i n d e x N A
0052140 M E P A C o m } { p a c o m
0052160 N A M E } , { i n d e x R E
0052200 T R I E V E P A C o m } { p a
0052220 c o m R E T R I E V E } , {
0052240 i n d e x B E F O R E P A C
0052260 o m } { p a c o m B E F O R E
0052300 } , a n d { i n d e x A F
0052320 T E R P A C o m } { p a c o m
0052340 A F T E R } { i t a r e }
0052360 r e c o r d e d a s i n p
0052400 u t s , a n d { p a c o m
0052420 ? ? } { i n d e x ? ? P A C
0052440 o m } p r i n t s t h e m
0052460 e x a c t l y a s t h e y
0052500 w e r e t y p e d . \r \r \r \r {
0052520 a r g P R O P S } i s a
0052540 p r o p e r t y l i s t o f
0052560 t h e f o r m \r { l i s p
0052600 ( { a r g P R O P E R T Y { s
0052620 u b 1 } } { a r g V A L U
0052640 E { s u b 1 } } { a r g P
0052660 R O P E R T Y { s u b 2 } }
0052700 { a r g V A L U E { s u b 2
0052720 } } { e l l i p s i s } ) } ,
0052740 \r t h a t c a n b e u s e
0052760 d t o a s s o c i a t e a
0053000 r b i t r a r y i n f o r m a
0053020 t i o n w i t h a p a r t
0053040 i c u l a r e v e n t . \r C u
0053060 r r e n t l y , t h e f o l
0053100 l o w i n g p r o p e r t i e
0053120 s a r e u s e d b y t h
0053140 e p r o g r a m m e r ' s a
0053160 s s i s t a n t : \r \r \r { B e g
0053200 i n L a b e l e d L i s t e
0053220 v e n t p r o p e r t i e s }
0053240 \r \r \r { N a m e { l i s p S
0053260 I D E } { i n d e x * P R I M
0053300 A R Y * S I D E ( H i s t o
0053320 r y L i s t P r o p e r t y
0053340 ) } } \r { T e x t \r A l i s t
0053360 o f t h e s i d e e f f
0053400 e c t s o f t h e e v e n
0053420 t . S e e { f n U N D O
0053440 S A V E } , { P a g e R e f
0053460 F n U N D O S A V E } . \r \r {
0053500 n o t e s h o u l d i n f o
0053520 f r o m U N D O S A V E a
0053540 b o u t S I D E = N O S A V E
0053560 a n d # U N D O S A V E S
0053600 b e m o v e d h e r e ? ? }
0053620 \r } \r \r \r { N a m e { i n d e
0053640 x X { N a m e P R I N T }
0053660 { T y p e h i s t o r y l i
0053700 s t p r o p e r t y } { T e
0053720 x t { l i s p * P R I N T *
0053740 } } } { i n d e x * P R I M
0053760 A R Y * * P R I N T * ( h i
0054000 s t o r y l i s t p r o p e
0054020 r t y ) } { l i s p * P R I N
0054040 T * } } \r { T e x t \r U s e d
0054060 b y t h e { p a c o m ? ?
0054100 } c o m m a n d w h e n s
0054120 p e c i a l f o r m a t t i n
0054140 g i s r e q u i r e d , f
0054160 o r e x a m p l e , w h e n
0054200 p r i n t i n g e v e n t s
0054220 c o r r e s p o n d i n g t
0054240 o t h e b r e a k c o m m
0054260 a n d s { b r e a k c o m O
0054300 K } , { b r e a k c o m G O
0054320 } , { b r e a k c o m E V A
0054340 L } , a n d { b r e a k c o
0054360 m ? = } . \r } \r \r \r { N a m e
0054400 { l i s p U S E - A R G S }
0054420 { i n d e x * P R I M A R Y *
0054440 U S E - A R G S ( H i s t o
0054460 r y L i s t P r o p e r t y
0054500 ) } } \r { N a m e { i n d e x
0054520 X { N a m e A R G S } { T
0054540 y p e h i s t o r y l i s t
0054560 p r o p e r t y } { T e x t
0054600 { l i s p . . . A R G S } }
0054620 } { i n d e x * P R I M A R
0054640 Y * . . . A R G S ( h i s t
0054660 o r y l i s t p r o p e r t
0054700 y ) } { l i s p . . . A R G S
0054720 } } \r { T e x t \r T h e { l i
0054740 s p U S E - A R G S } a n d
0054760 { l i s p . . . A R G S }
0055000 p r o p e r t i e s a r e u
0055020 s e d t o s a v e t h e
0055040 a r g u m e n t s a n d e x
0055060 p r e s s i o n f o r t h e
0055100 c o r r e s p o n d i n g h
0055120 i s t o r y c o m m a n d . \r
0055140 } \r \r \r { N a m e { i n d e x
0055160 X { N a m e E R R O R } {
0055200 T y p e h i s t o r y l i s
0055220 t p r o p e r t y } { T e x
0055240 t { l i s p * E R R O R * }
0055260 } } { i n d e x * P R I M A
0055300 R Y * * E R R O R * ( h i s
0055320 t o r y l i s t p r o p e r
0055340 t y ) } { l i s p * E R R O R
0055360 * } } \r { N a m e { i n d e x
0055400 X { N a m e C O N T E X T }
0055420 { T y p e h i s t o r y l
0055440 i s t p r o p e r t y } { T
0055460 e x t { l i s p * C O N T E
0055500 X T * } } } { i n d e x * P
0055520 R I M A R Y * * C O N T E X T
0055540 * ( h i s t o r y l i s t
0055560 p r o p e r t y ) } { l i s p
0055600 * C O N T E X T * } } \r { T e x
0055620 t \r { l i s p * E R R O R * }
0055640 a n d { l i s p * C O N T
0055660 E X T * } a r e u s e d t
0055700 o s a v e i n f o r m a t i
0055720 o n w h e n e r r o r s o
0055740 c c u r f o r s u b s e q u
0055760 e n t u s e b y t h e {
0056000 p a c o m $ } c o m m a n d
0056020 . W h e n e v e r a n e
0056040 r r o r o c c u r s , t h e
0056060 o f f e n d e r i s a u t
0056100 o m a t i c a l l y s a v e d
0056120 o n t h a t e v e n t ' s
0056140 e n t r y i n t h e h i
0056160 s t o r y l i s t , u n d e
0056200 r t h e { l i s p * E R R
0056220 O R * } p r o p e r t y . \r \r
0056240 { n o t e * C O N T E X T *
0056260 ? ? } \r } \r \r \r { N a m e { i
0056300 n d e x X { N a m e L I S P
0056320 X P R I N T } { T y p e h i
0056340 s t o r y l i s t p r o p e
0056360 r t y } { T e x t { l i s p
0056400 * L I S P X P R I N T * } }
0056420 } { i n d e x * P R I M A R Y
0056440 * * L I S P X P R I N T * (
0056460 h i s t o r y l i s t p r o
0056500 p e r t y ) } { l i s p * L I
0056520 S P X P R I N T * } } \r { T e x
0056540 t \r U s e d t o r e c o r d
0056560 c a l l s t o { i n d e x
0056600 L I S P X P R I N T F N } {
0056620 f n L I S P X P R I N T } ,
0056640 { f n L I S P X P R I N 1 } ,
0056660 e t c . ( s e e { P a g e
0056700 R e f F n L I S P X P R I N
0056720 T } ) . \r } \r \r { N a m e { i
0056740 n d e x X { N a m e A R C H
0056760 I V E } { T y p e h i s t o
0057000 r y l i s t p r o p e r t y
0057020 } { T e x t { l i s p * A
0057040 R C H I V E * } } } { i n d e
0057060 x * P R I M A R Y * * A R C
0057100 H I V E * ( h i s t o r y l
0057120 i s t p r o p e r t y ) } { l
0057140 i s p * A R C H I V E * } } \r
0057160 { T e x t \r T h e p r o p e r
0057200 t y { l i s p * A R C H I V
0057220 E * } o n a n e v e n t
0057240 c a u s e s t h e e v e n t
0057260 t o b e a u t o m a t i c
0057300 a l l y a r c h i v e d w h
0057320 e n i t " f a l l s o f f
0057340 t h e e n d " o f t h e
0057360 h i s t o r y l i s t ( s
0057400 e e { P a g e R e f P A C o
0057420 m A R C H I V E } ) . \r \r { n
0057440 o t e d o e s i t j u s t
0057460 h a v e t o b e o n P
0057500 R O P S , o r d o e s i t
0057520 h a v e t o h a v e v a
0057540 l u e T ? ? } \r } \r \r \r { N a
0057560 m e { i n d e x X { N a m e
0057600 G R O U P } { T y p e h i
0057620 s t o r y l i s t p r o p e
0057640 r t y } { T e x t { l i s p
0057660 * G R O U P * } } } { i n d
0057700 e x * P R I M A R Y * * G R
0057720 O U P * ( h i s t o r y l i
0057740 s t p r o p e r t y ) } { l i
0057760 s p * G R O U P * } } \r { N a
0060000 m e { i n d e x X { N a m e
0060020 H I S T O R Y } { T y p e
0060040 h i s t o r y l i s t p r o
0060060 p e r t y } { T e x t { l i
0060100 s p * H I S T O R Y * } } }
0060120 { i n d e x * P R I M A R Y *
0060140 * H I S T O R Y * ( h i s t
0060160 o r y l i s t p r o p e r t
0060200 y ) } { l i s p * H I S T O R
0060220 Y * } } \r { T e x t \r T h e {
0060240 l i s p * H I S T O R Y * }
0060260 a n d { l i s p * G R O U P
0060300 * } p r o p e r t i e s a r
0060320 e u s e d f o r c o m m a
0060340 n d s t h a t r e e x e c u
0060360 t e p r e v i o u s e v e n
0060400 t s , i . e . , { p a c o m
0060420 R E D O } , { p a c o m R
0060440 E T R Y } , { p a c o m U S
0060460 E } , { p a c o m . . . } ,
0060500 a n d { p a c o m F I X }
0060520 . T h e v a l u e o f
0060540 t h e { l i s p * H I S T O
0060560 R Y * } p r o p e r t y i s
0060600 t h e h i s t o r y c o m
0060620 m a n d t h a t t h e u s
0060640 e r a c t u a l l y t y p e
0060660 d , e . g . , { l i s p R
0060700 E D O F R O M F } . T h
0060720 i s i s u s e d b y t h
0060740 e { p a c o m ? ? } c o m
0060760 m a n d w h e n p r i n t i
0061000 n g t h e e v e n t . T
0061020 h e v a l u e o f t h e
0061040 { l i s p * G R O U P * } p
0061060 r o p e r t y i s a s t r
0061100 u c t u r e c o n t a i n i n
0061120 g t h e s i d e e f f e c
0061140 t s , e t c . f o r t h e
0061160 i n d i v i d u a l i n p u
0061200 t s b e i n g r e e x e c u
0061220 t e d . T h i s s t r u c
0061240 t u r e i s d e s c r i b e
0061260 d b e l o w . \r } \r \r { E n d
0061300 L a b e l e d L i s t e v e
0061320 n t p r o p e r t i e s } \r \r
0061340 \r \r { n o t e w h e r e s h
0061360 o u l d t h e f o l l o w i
0061400 n g d i s c u s s i o n g o
0061420 ? ? n e a r H I S T O R Y S
0061440 A V E ? ? } \r \r \r W h e n {
0061460 f n L I S P X } i s g i v
0061500 e n a n i n p u t , i t
0061520 c a l l s { f n H I S T O R
0061540 Y S A V E } ( { P a g e R e f
0061560 F n H I S T O R Y S A V E }
0061600 ) t o r e c o r d t h e
0061620 i n p u t i n a n e w e
0061640 v e n t ( e x c e p t f o r
0061660 t h e c o m m a n d s { p
0061700 a c o m ? ? } , { p a c o m
0061720 F O R G E T } , { p a c o m
0061740 T Y P E - A H E A D } , { p
0061760 a c o m $ B U F S } , a n d
0062000 { p a c o m A R C H I V E }
0062020 , t h a t a r e e x e c u
0062040 t e d i m m e d i a t e l y
0062060 a n d a r e n o t r e c o
0062100 r d e d o n t h e h i s t
0062120 o r y l i s t ) . N o r m
0062140 a l l y , { f n H I S T O R
0062160 Y S A V E } c r e a t e s a
0062200 n d r e t u r n s a n e w
0062220 e v e n t . { i n d e x
0062240 L I S P X F N } { f n L I S
0062260 P X } b i n d s t h e v a
0062300 r i a b l e { v a r L I S P
0062320 X H I S T } { i n d e x * P R
0062340 I M A R Y * L I S P X H I S T
0062360 V a r } t o t h e v a l
0062400 u e o f { i n d e x H I S
0062420 T O R Y S A V E F N } { f n
0062440 H I S T O R Y S A V E } , s o
0062460 t h a t w h e n t h e o
0062500 p e r a t i o n h a s c o m
0062520 p l e t e d , { f n L I S P
0062540 X } k n o w s w h e r e t
0062560 o s t o r e t h e v a l u
0062600 e . N o t e t h a t b y
0062620 t h e t i m e i t c o m
0062640 p l e t e s , t h e o p e r
0062660 a t i o n m a y n o l o n
0062700 g e r c o r r e s p o n d t
0062720 o t h e m o s t r e c e n
0062740 t e v e n t o n t h e h
0062760 i s t o r y l i s t . F o
0063000 r e x a m p l e , a l l i
0063020 n p u t s t y p e d t o a
0063040 l o w e r b r e a k w i l
0063060 l a p p e a r l a t e r o
0063100 n t h e h i s t o r y l i
0063120 s t . A f t e r b i n d i
0063140 n g { v a r L I S P X H I S
0063160 T } , { f n L I S P X } e
0063200 x e c u t e s t h e i n p u
0063220 t , s t o r e s i t s v a
0063240 l u e i n t h e v a l u e
0063260 f i e l d o f t h e { v
0063300 a r L I S P X H I S T } e v
0063320 e n t , p r i n t s t h e
0063340 v a l u e , a n d r e t u r
0063360 n s . \r \r \r { T a g E v e n t
0063400 G r o u p } \r \r W h e n t h e
0063420 i n p u t i s a { p a c
0063440 o m R E D O } , { p a c o m
0063460 R E T R Y } , { p a c o m
0063500 U S E } , { p a c o m . . .
0063520 } , o r { p a c o m F I X
0063540 } c o m m a n d , t h e p
0063560 r o c e d u r e i s s i m i
0063600 l a r , e x c e p t t h a t
0063620 t h e e v e n t i s a l
0063640 s o g i v e n a { l i s p
0063660 * G R O U P * } p r o p e r
0063700 t y , i n i t i a l l y { l
0063720 i s p N I L } , a n d a
0063740 { l i s p * H I S T O R Y * }
0063760 p r o p e r t y , a n d {
0064000 f n L I S P X } s i m p l y
0064020 u n r e a d s t h e i n p
0064040 u t a n d r e t u r n s .
0064060 W h e n t h e i n p u t
0064100 i s " r e r e a d " , i t
0064120 i s { f n H I S T O R Y S A
0064140 V E } , n o t { f n L I S
0064160 P X } , t h a t n o t i c e
0064200 s t h i s f a c t , a n d
0064220 f i n d s t h e e v e n t
0064240 f r o m w h i c h t h e
0064260 i n p u t o r i g i n a l l y
0064300 c a m e . I f { i n d e
0064320 x H I S T O R Y S A V E F N
0064340 } { f n H I S T O R Y S A V E
0064360 } c a n n o t f i n d t h
0064400 e e v e n t , f o r e x a
0064420 m p l e i f a u s e r p
0064440 r o g r a m u n r e a d s t
0064460 h e i n p u t d i r e c t l
0064500 y , a n d n o t v i a a
0064520 h i s t o r y c o m m a n d
0064540 , { f n H I S T O R Y S A V
0064560 E } p r o c e e d s a s t
0064600 h o u g h t h e i n p u t
0064620 w e r e t y p e d . { f n
0064640 H I S T O R Y S A V E } t h
0064660 e n a d d s a n e w { l
0064700 i s p ( { a r g I N P U T }
0064720 { a r g I D } { a r g V
0064740 A L U E } . { a r g P R O
0064760 P S } ) } e n t r y t o t
0065000 h e { l i s p * G R O U P *
0065020 } p r o p e r t y f o r t
0065040 h i s e v e n t , a n d r
0065060 e t u r n s t h i s e n t r
0065100 y a s t h e " n e w e v
0065120 e n t . " { f n L I S P X
0065140 } t h e n p r o c e e d s
0065160 e x a c t l y a s w h e n
0065200 i t s i n p u t w a s t y
0065220 p e d d i r e c t l y , i .
0065240 e . , i t b i n d s { v a
0065260 r L I S P X H I S T } t o
0065300 t h e v a l u e o f { f n
0065320 H I S T O R Y S A V E } , e
0065340 x e c u t e s t h e i n p u
0065360 t , s t o r e s t h e v a
0065400 l u e i n { f n C A D D R
0065420 } o f { v a r L I S P X H
0065440 I S T } , p r i n t s t h e
0065460 v a l u e , a n d r e t u
0065500 r n s . I n f a c t , {
0065520 i n d e x L I S P X F N } {
0065540 f n L I S P X } n e v e r
0065560 n o t i c e s w h e t h e r
0065600 i t i s w o r k i n g o n
0065620 f r e s h l y t y p e d i
0065640 n p u t , o r i n p u t t
0065660 h a t w a s r e r e a d .
0065700 S i m i l a r l y , { i n d
0065720 e x U N D O S A V E F N } {
0065740 f n U N D O S A V E } w i l
0065760 l s t o r e u n d o i n f
0066000 o r m a t i o n o n { i n d
0066020 e x L I S P X H I S T V a r
0066040 } { v a r L I S P X H I S T }
0066060 t h e s a m e a s a l w
0066100 a y s , a n d d o e s n o
0066120 t k n o w o r c a r e t
0066140 h a t { v a r L I S P X H I
0066160 S T } i s n o t t h e e
0066200 n t i r e e v e n t , b u t
0066220 o n e o f t h e e l e m
0066240 e n t s o f t h e { l i s
0066260 p * G R O U P * } p r o p e
0066300 r t y . T h u s w h e n
0066320 t h e e v e n t i s f i n
0066340 i s h e d , i t s e n t r y
0066360 w i l l l o o k l i k e :
0066400 \r \r { l i s p c o d e \r ( { a r
0066420 g I N P U T } { a r g I D
0066440 } { a r g V A L U E } \r
0066460 * H I S T O R Y * \r
0066500 { a r g C O
0066520 M M A N D } \r * G R
0066540 O U P * \r
0066560 ( ( { a r g I N P U T { s u b
0066600 1 } } { a r g I D { s u b
0066620 1 } } { a r g V A L U E {
0066640 s u b 1 } } S I D E { a r
0066660 g S I D E { s u b 1 } } ) \r
0066700 ( { a r
0066720 g I N P U T { s u b 2 } }
0066740 { a r g I D { s u b 2 } }
0066760 { a r g V A L U E { s u b 2
0067000 } } S I D E { a r g S I D
0067020 E { s u b 2 } } ) \r
0067040 { e l l i p s i
0067060 s } ) ) } \r \r \r I n t h i s
0067100 c a s e , t h e v a l u e
0067120 f i e l d o f t h e e v e
0067140 n t w i t h t h e { l i s
0067160 p * G R O U P * } p r o p e
0067200 r t y i s n o t b e i n g
0067220 u s e d ; { i n d e x V A
0067240 L U E O F F N } { f n V A L
0067260 U E O F } i n s t e a d r e
0067300 t u r n s a l i s t o f
0067320 t h e v a l u e s f r o m
0067340 t h e { p r o p * G R O U P
0067360 * } p r o p e r t y . S i
0067400 m i l a r l y , { p a c o m
0067420 U N D O } o p e r a t e s b
0067440 y c o l l e c t i n g t h e
0067460 { i n d e x S I D E P r o
0067500 p } { p r o p S I D E } p r
0067520 o p e r t i e s f r o m e a
0067540 c h o f t h e e l e m e n
0067560 t s o f t h e { p r o p
0067600 * G R O U P * } p r o p e r t
0067620 y , a n d t h e n u n d o
0067640 i n g t h e m i n r e v e
0067660 r s e o r d e r . \r \r \r T h i
0067700 s i m p l e m e n t a t i o n
0067720 r e m o v e s t h e b u r
0067740 d e n f r o m t h e f u n
0067760 c t i o n c a l l i n g { i
0070000 n d e x H I S T O R Y S A V E
0070020 F N } { f n H I S T O R Y S
0070040 A V E } o f d i s t i n g u
0070060 i s h i n g b e t w e e n n
0070100 e w i n p u t a n d r e e
0070120 x e c u t i o n o f i n p u
0070140 t w h o s e h i s t o r y
0070160 e n t r y h a s a l r e a d
0070200 y b e e n s e t u p . \r \r
0070220 \r } { E n d S u b S e c F o
0070240 r m a t a n d U s e o f
0070260 t h e H i s t o r y L i s t
0070300 } \r \r \r \0 \0 \0 \0 \0 004 \0 002 \0 ? \0 1
0070320 ( D E F A U L T F O N T 1 (
0070340 G A C H A 1 0 ) ( G A C H A
0070360 8 ) ( T E R M I N A L 8 )
0070400 ) \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 ? \0 1 (
0070420 D E F A U L T F O N T 1 ( G
0070440 A C H A 1 0 ) ( G A C H A
0070460 8 ) ( T E R M I N A L 8 ) )
0070500 \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \n r \0 \0
0070520 \0 \0 002 \0 \0 \0 \b \0 \0 \0 \0 001 \0 \0 f J
0070540 \0 \0 \0 \0 002 \0 \0 p 304 \0 003 z 272
0070555