mirror of
https://github.com/helix-editor/helix.git
synced 2025-01-19 05:27:07 +04:00
move config parsing back into main
This commit is contained in:
parent
ad15e7b5e8
commit
0623a72599
@ -56,29 +56,10 @@ pub struct Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Application {
|
impl Application {
|
||||||
pub fn new(args: Args) -> Result<Self, Error> {
|
pub fn new(args: Args, config: Config) -> Result<Self, Error> {
|
||||||
use helix_view::editor::Action;
|
use helix_view::editor::Action;
|
||||||
|
|
||||||
let config_dir = helix_loader::config_dir();
|
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(crate::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)),
|
|
||||||
};
|
|
||||||
|
|
||||||
let theme_loader = std::sync::Arc::new(theme::Loader::new(
|
let theme_loader = std::sync::Arc::new(theme::Loader::new(
|
||||||
&config_dir,
|
&config_dir,
|
||||||
&helix_loader::runtime_dir(),
|
&helix_loader::runtime_dir(),
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
use anyhow::{Context, Result};
|
use anyhow::{Context, Error, Result};
|
||||||
use helix_term::application::Application;
|
use helix_term::application::Application;
|
||||||
use helix_term::args::Args;
|
use helix_term::args::Args;
|
||||||
|
use helix_term::config::Config;
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
|
|
||||||
fn setup_logging(logpath: PathBuf, verbosity: u64) -> Result<()> {
|
fn setup_logging(logpath: PathBuf, verbosity: u64) -> Result<()> {
|
||||||
@ -110,8 +111,28 @@ async fn main_impl() -> Result<i32> {
|
|||||||
|
|
||||||
setup_logging(logpath, args.verbosity).context("failed to initialize logging")?;
|
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
|
// 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().await?;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user