neovim-gtk/src/main.rs

41 lines
831 B
Rust

extern crate gtk;
extern crate gdk;
extern crate gdk_sys;
extern crate glib;
extern crate glib_sys;
extern crate cairo;
extern crate neovim_lib;
extern crate phf;
mod nvim;
mod ui_model;
mod ui;
mod input;
use std::thread;
fn main() {
gtk::init().expect("Failed to initialize GTK");
ui::UI.with(|ui_cell| {
let mut ui = ui_cell.borrow_mut();
ui.init();
nvim::initialize(&mut *ui).expect("Can't start nvim instance");
guard_dispatch_thread(&mut *ui);
});
gtk::main();
}
fn guard_dispatch_thread(ui: &mut ui::Ui) {
let guard = ui.nvim().session.take_dispatch_guard();
thread::spawn(move || {
guard.join().expect("Can't join dispatch thread");
glib::idle_add(move || {
gtk::main_quit();
glib::Continue(false)
});
});
}