diff --git a/src/cli.rs b/src/cli.rs index 3db0747d01..38e2474faf 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -406,6 +406,18 @@ pub async fn cli() -> Result<(), Box> { } LineResult::CtrlC => { + let config_ctrlc_exit = config::config(Tag::unknown())? + .get("ctrlc_exit") + .map(|s| match s.as_string().unwrap().as_ref() { + "true" => true, + _ => false, + }) + .unwrap_or(false); // default behavior is to allow CTRL-C spamming similar to other shells + + if !config_ctrlc_exit { + continue; + } + if ctrlcbreak { let _ = rl.save_history(&History::path()); std::process::exit(0);