rl_lang/interpreter/stdlib/terminal/
leave.rs1use crate::interpreter::stdlib::common::{try_fn, verr, vnl, vok, vs};
2use crate::interpreter::{evaluator::Evaluator, values::Value};
3use crossterm::cursor::Show;
4use crossterm::{
5 execute,
6 terminal::{LeaveAlternateScreen, disable_raw_mode},
7};
8use std::io::{Write, stderr, stdout};
9
10pub fn func(_: &mut Evaluator) -> Value {
11 let _ = stdout().flush();
12 let _ = stderr().flush();
13 try_fn!("term_leave", disable_raw_mode());
14 try_fn!("term_leave", execute!(stdout(), Show, LeaveAlternateScreen));
15 let _ = stdout().flush();
16
17 vok!(vnl!())
18}