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