Skip to main content

rl_lang/interpreter/stdlib/terminal/
leave.rs

1use 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}