mirror of
https://github.com/nushell/nushell.git
synced 2025-08-10 21:35:31 +02:00
Add helper method to check whether ctrl+c was pressed, adopt it (#7482)
I've been working on streaming and pipeline interruption lately. It was bothering me that checking ctrl+c (something we want to do often) always requires a bunch of boilerplate like: ```rust use std::sync::atomic::Ordering; if let Some(ctrlc) = &engine_state.ctrlc { if ctrlc.load(Ordering::SeqCst) { ... ``` I added a helper method to cut that down to: ```rust if nu_utils::ctrl_c::was_pressed(&engine_state.ctrlc) { ... ```
This commit is contained in:
@ -1,5 +1,3 @@
|
||||
use std::sync::atomic::Ordering;
|
||||
|
||||
use nu_engine::{eval_block, CallExt};
|
||||
use nu_protocol::ast::Call;
|
||||
use nu_protocol::engine::{Block, Command, EngineState, Stack};
|
||||
@ -44,10 +42,8 @@ impl Command for Loop {
|
||||
let block: Block = call.req(engine_state, stack, 0)?;
|
||||
|
||||
loop {
|
||||
if let Some(ctrlc) = &engine_state.ctrlc {
|
||||
if ctrlc.load(Ordering::SeqCst) {
|
||||
break;
|
||||
}
|
||||
if nu_utils::ctrl_c::was_pressed(&engine_state.ctrlc) {
|
||||
break;
|
||||
}
|
||||
|
||||
let block = engine_state.get_block(block.block_id);
|
||||
|
@ -1,5 +1,3 @@
|
||||
use std::sync::atomic::Ordering;
|
||||
|
||||
use nu_engine::{eval_block, eval_expression, CallExt};
|
||||
use nu_protocol::ast::Call;
|
||||
use nu_protocol::engine::{Block, Command, EngineState, Stack};
|
||||
@ -48,10 +46,8 @@ impl Command for While {
|
||||
let block: Block = call.req(engine_state, stack, 1)?;
|
||||
|
||||
loop {
|
||||
if let Some(ctrlc) = &engine_state.ctrlc {
|
||||
if ctrlc.load(Ordering::SeqCst) {
|
||||
break;
|
||||
}
|
||||
if nu_utils::ctrl_c::was_pressed(&engine_state.ctrlc) {
|
||||
break;
|
||||
}
|
||||
|
||||
let result = eval_expression(engine_state, stack, cond)?;
|
||||
|
Reference in New Issue
Block a user