From 98c6ce2d94800b6411fef17c6f660c98145f6c39 Mon Sep 17 00:00:00 2001 From: Andy Gayton Date: Sun, 23 Jun 2024 09:35:48 -0400 Subject: [PATCH] clean up --- src/main.rs | 14 ++++++-------- src/signals.rs | 21 +++++++++++---------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/main.rs b/src/main.rs index 25b1aa99b6..60715b1590 100644 --- a/src/main.rs +++ b/src/main.rs @@ -25,8 +25,8 @@ use nu_cmd_base::util::get_init_cwd; use nu_lsp::LanguageServer; use nu_path::canonicalize_with; use nu_protocol::{ - engine::EngineState, report_error_new, ByteStream, PipelineData, ShellError, Span, Spanned, - Value, + engine::{ctrlc, EngineState}, + report_error_new, ByteStream, PipelineData, ShellError, Span, Spanned, Value, }; use nu_std::load_standard_library; use nu_utils::utils::perf; @@ -75,7 +75,9 @@ fn main() -> Result<()> { } // TODO: make this conditional in the future - ctrlc_protection(&mut engine_state); + let ctrlc_bool = Arc::new(AtomicBool::new(false)); + let ctrlc_handlers = ctrlc::Handlers::new(); + ctrlc_protection(&mut engine_state, &ctrlc_bool, &ctrlc_handlers); // Begin: Default NU_LIB_DIRS, NU_PLUGIN_DIRS // Set default NU_LIB_DIRS and NU_PLUGIN_DIRS here before the env.nu is processed. If @@ -460,11 +462,7 @@ fn main() -> Result<()> { ); } - let ctrlc = engine_state - .ctrlc - .clone() - .unwrap_or_else(|| Arc::new(AtomicBool::new(false))); - LanguageServer::initialize_stdio_connection()?.serve_requests(engine_state, ctrlc)? + LanguageServer::initialize_stdio_connection()?.serve_requests(engine_state, ctrlc_bool)? } else if let Some(commands) = parsed_nu_cli_args.commands.clone() { run_commands( &mut engine_state, diff --git a/src/signals.rs b/src/signals.rs index e434fec393..dfdc014993 100644 --- a/src/signals.rs +++ b/src/signals.rs @@ -4,20 +4,21 @@ use std::sync::{ Arc, }; -pub(crate) fn ctrlc_protection(engine_state: &mut EngineState) { - let ctrlc = Arc::new(AtomicBool::new(false)); - let handlers = Handlers::new(); - +pub(crate) fn ctrlc_protection( + engine_state: &mut EngineState, + ctrlc_bool: &Arc, + ctrlc_handlers: &Handlers, +) { { - let ctrlc = ctrlc.clone(); - let handlers = handlers.clone(); + let ctrlc_bool = ctrlc_bool.clone(); + let ctrlc_handlers = ctrlc_handlers.clone(); ctrlc::set_handler(move || { - ctrlc.store(true, Ordering::SeqCst); - handlers.run(); + ctrlc_bool.store(true, Ordering::SeqCst); + ctrlc_handlers.run(); }) .expect("Error setting Ctrl-C handler"); } - engine_state.ctrlc = Some(ctrlc); - engine_state.ctrlc_handlers = Some(handlers); + engine_state.ctrlc = Some(ctrlc_bool.clone()); + engine_state.ctrlc_handlers = Some(ctrlc_handlers.clone()); }