diff --git a/cli/config/src/lib.rs b/cli/config/src/lib.rs index cc52ea6e..94e857c1 100644 --- a/cli/config/src/lib.rs +++ b/cli/config/src/lib.rs @@ -20,7 +20,7 @@ pub struct Config { } impl Config { - fn find_config_file() -> Result> { + pub fn find_config_file() -> Result> { if let Ok(path) = env::var("TREE_SITTER_DIR") { let mut path = PathBuf::from(path); path.push("config.json"); diff --git a/cli/src/main.rs b/cli/src/main.rs index 97247fd8..8e2b2eb8 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -194,6 +194,12 @@ fn run() -> Result<()> { match matches.subcommand() { ("init-config", Some(_)) => { + if let Ok(Some(config_path)) = Config::find_config_file() { + return Err(anyhow!( + "Remove your existing config file first: {}", + config_path.to_string_lossy() + )); + } let mut config = Config::initial()?; config.add(tree_sitter_loader::Config::initial())?; config.add(tree_sitter_cli::highlight::ThemeConfig::default())?;