mirror of
https://github.com/nushell/nushell.git
synced 2025-08-09 01:05:01 +02:00
Add and use new Signals
struct (#13314)
# Description This PR introduces a new `Signals` struct to replace our adhoc passing around of `ctrlc: Option<Arc<AtomicBool>>`. Doing so has a few benefits: - We can better enforce when/where resetting or triggering an interrupt is allowed. - Consolidates `nu_utils::ctrl_c::was_pressed` and other ad-hoc re-implementations into a single place: `Signals::check`. - This allows us to add other types of signals later if we want. E.g., exiting or suspension. - Similarly, we can more easily change the underlying implementation if we need to in the future. - Places that used to have a `ctrlc` of `None` now use `Signals::empty()`, so we can double check these usages for correctness in the future.
This commit is contained in:
@ -1,13 +0,0 @@
|
||||
use std::sync::{
|
||||
atomic::{AtomicBool, Ordering},
|
||||
Arc,
|
||||
};
|
||||
|
||||
/// Returns true if Nu has received a SIGINT signal / ctrl+c event
|
||||
pub fn was_pressed(ctrlc: &Option<Arc<AtomicBool>>) -> bool {
|
||||
if let Some(ctrlc) = ctrlc {
|
||||
ctrlc.load(Ordering::SeqCst)
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
mod casing;
|
||||
pub mod ctrl_c;
|
||||
mod deansi;
|
||||
pub mod emoji;
|
||||
pub mod filesystem;
|
||||
|
Reference in New Issue
Block a user