diff options
author | Blaž Hrastnik | 2022-06-21 16:59:02 +0000 |
---|---|---|
committer | GitHub | 2022-06-21 16:59:02 +0000 |
commit | 19dccade7c44619bfa414a711fe72a612e4ca358 (patch) | |
tree | d0a502bc095c1619cfb94236782f42d595af0197 /helix-term/src/main.rs | |
parent | a17626a822b36d4de3146c2d410f976e19dd189c (diff) | |
parent | 458b89e21dcf76bbf9ca6ba237bd334f4922722d (diff) |
Merge pull request #2359 from dead10ck/test-harness
Integration testing harness
Diffstat (limited to 'helix-term/src/main.rs')
-rw-r--r-- | helix-term/src/main.rs | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/helix-term/src/main.rs b/helix-term/src/main.rs index 58a90131..7b26fb11 100644 --- a/helix-term/src/main.rs +++ b/helix-term/src/main.rs @@ -1,6 +1,8 @@ -use anyhow::{Context, Result}; +use anyhow::{Context, Error, Result}; +use crossterm::event::EventStream; use helix_term::application::Application; use helix_term::args::Args; +use helix_term::config::Config; use std::path::PathBuf; fn setup_logging(logpath: PathBuf, verbosity: u64) -> Result<()> { @@ -110,10 +112,30 @@ FLAGS: setup_logging(logpath, args.verbosity).context("failed to initialize logging")?; + let config_dir = helix_loader::config_dir(); + if !config_dir.exists() { + std::fs::create_dir_all(&config_dir).ok(); + } + + let config = match std::fs::read_to_string(config_dir.join("config.toml")) { + Ok(config) => toml::from_str(&config) + .map(helix_term::keymap::merge_keys) + .unwrap_or_else(|err| { + eprintln!("Bad config: {}", err); + eprintln!("Press <ENTER> to continue with default config"); + use std::io::Read; + // This waits for an enter press. + let _ = std::io::stdin().read(&mut []); + Config::default() + }), + Err(err) if err.kind() == std::io::ErrorKind::NotFound => Config::default(), + Err(err) => return Err(Error::new(err)), + }; + // TODO: use the thread local executor to spawn the application task separately from the work pool - let mut app = Application::new(args).context("unable to create new application")?; + let mut app = Application::new(args, config).context("unable to create new application")?; - let exit_code = app.run().await?; + let exit_code = app.run(&mut EventStream::new()).await?; Ok(exit_code) } |