mod app;
mod block;
mod buffer;
mod config;
mod history;
mod keymap;
mod killring;
mod markdown;
mod search;
mod session;
mod theme;
mod ui;
use std::io;
use crossterm::event::{
KeyboardEnhancementFlags, PopKeyboardEnhancementFlags, PushKeyboardEnhancementFlags,
};
fn main() -> io::Result<()> {
let path = std::env::args_os().nth(1).map(std::path::PathBuf::from);
let mut app = app::App::new(path)?;
let mut terminal = ratatui::init();
let enhanced = crossterm::terminal::supports_keyboard_enhancement().unwrap_or(false);
if enhanced {
let _ = crossterm::execute!(
io::stdout(),
PushKeyboardEnhancementFlags(KeyboardEnhancementFlags::DISAMBIGUATE_ESCAPE_CODES)
);
}
let result = app.run(&mut terminal);
if enhanced {
let _ = crossterm::execute!(io::stdout(), PopKeyboardEnhancementFlags);
}
ratatui::restore();
result
}