@@ -42,7 +42,7 @@ pub fn handle_event(
4242 Command :: UserInput ( InputEvent :: Exit ) => {
4343 p. exit ( ) ;
4444 is_exited. store ( true , std:: sync:: atomic:: Ordering :: SeqCst ) ;
45- term:: cleanup ( & mut out, & p. exit_strategy , true ) ?;
45+ term:: cleanup ( & mut out, & p. exit_strategy , true , p . persist_alternate ) ?;
4646 }
4747 Command :: UserInput ( InputEvent :: UpdateUpperMark ( mut um) ) => {
4848 display:: draw_for_change ( out, p, & mut um) ?;
@@ -274,6 +274,7 @@ pub fn handle_event(
274274 display:: write_prompt ( out, & p. displayed_prompt , p. rows . try_into ( ) . unwrap ( ) ) ?;
275275 }
276276 Command :: SetExitStrategy ( es) => p. exit_strategy = es,
277+ Command :: PersistAlternate ( b) => p. persist_alternate = b,
277278 #[ cfg( feature = "static_output" ) ]
278279 Command :: SetRunNoOverflow ( val) => p. run_no_overflow = val,
279280 #[ cfg( feature = "search" ) ]
@@ -475,6 +476,26 @@ mod tests {
475476 assert_eq ! ( ps. exit_strategy, ExitStrategy :: PagerQuit ) ;
476477 }
477478
479+ #[ test]
480+ fn set_persist_screen ( ) {
481+ let mut ps = PagerState :: new ( ) . unwrap ( ) ;
482+ let ev = Command :: PersistAlternate ( true ) ;
483+ let mut out = Vec :: new ( ) ;
484+ let mut command_queue = CommandQueue :: new_zero ( ) ;
485+
486+ handle_event (
487+ ev,
488+ & mut out,
489+ & mut ps,
490+ & mut command_queue,
491+ & Arc :: new ( AtomicBool :: new ( false ) ) ,
492+ #[ cfg( feature = "search" ) ]
493+ & UIA ,
494+ )
495+ . unwrap ( ) ;
496+ assert_eq ! ( ps. persist_alternate, true ) ;
497+ }
498+
478499 #[ test]
479500 fn add_exit_callback ( ) {
480501 let mut ps = PagerState :: new ( ) . unwrap ( ) ;
0 commit comments