2020-06-02 03:57:01 +02:00
|
|
|
#![allow(unused)]
|
2020-09-19 16:16:00 +02:00
|
|
|
|
2020-06-04 01:05:01 +02:00
|
|
|
mod editor;
|
2020-05-20 11:14:51 +02:00
|
|
|
|
2020-06-04 01:05:01 +02:00
|
|
|
use editor::Editor;
|
2020-05-20 11:14:51 +02:00
|
|
|
|
2020-05-25 06:02:21 +02:00
|
|
|
use argh::FromArgs;
|
2020-06-02 03:57:01 +02:00
|
|
|
use std::path::PathBuf;
|
2020-05-20 11:14:51 +02:00
|
|
|
|
2020-05-25 06:02:21 +02:00
|
|
|
use anyhow::Error;
|
2020-05-20 11:14:51 +02:00
|
|
|
|
2020-05-25 06:02:21 +02:00
|
|
|
#[derive(FromArgs)]
|
|
|
|
/// A post-modern text editor.
|
|
|
|
pub struct Args {
|
|
|
|
#[argh(positional)]
|
|
|
|
files: Vec<PathBuf>,
|
2020-05-20 11:14:51 +02:00
|
|
|
}
|
|
|
|
|
2020-09-04 11:18:40 +02:00
|
|
|
static EX: smol::Executor = smol::Executor::new();
|
|
|
|
|
2020-05-20 11:14:51 +02:00
|
|
|
fn main() -> Result<(), Error> {
|
2020-05-25 06:02:21 +02:00
|
|
|
let args: Args = argh::from_env();
|
2020-05-20 11:14:51 +02:00
|
|
|
|
2020-09-04 11:18:40 +02:00
|
|
|
for _ in 0..num_cpus::get() {
|
|
|
|
std::thread::spawn(move || smol::block_on(EX.run(smol::future::pending::<()>())));
|
|
|
|
}
|
|
|
|
|
|
|
|
smol::block_on(EX.run(async {
|
|
|
|
editor::Editor::new(args).unwrap().run().await;
|
|
|
|
}));
|
2020-05-20 11:14:51 +02:00
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|