diff options
| author | sigoden <sigoden@gmail.com> | 2024-11-27 09:16:06 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-11-27 09:16:06 +0800 |
| commit | 2003159d322a96165ab949051c004c456de5be11 (patch) | |
| tree | dc3c7f8e1850267ba24d1a3bf9a76fdac4366b6a /src/main.rs | |
| parent | 6f60ad47535b75064a79331c22758d86e6e46d4f (diff) | |
| download | aichat-2003159d322a96165ab949051c004c456de5be11.tar.gz | |
feat: handle Ctrl+C during every spinner in REPL (#1014)
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index 8ca1e31..c41b1e7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -146,14 +146,14 @@ async fn run(config: GlobalConfig, cli: Cli, text: Option<String>) -> Result<()> if cfg!(target_os = "macos") && !stdin().is_terminal() { bail!("Unable to read the pipe for shell execution on MacOS") } - let input = create_input(&config, text, &cli.file).await?; + let input = create_input(&config, text, &cli.file, abort_signal.clone()).await?; shell_execute(&config, &SHELL, input, abort_signal.clone()).await?; return Ok(()); } config.write().apply_prelude()?; match is_repl { false => { - let mut input = create_input(&config, text, &cli.file).await?; + let mut input = create_input(&config, text, &cli.file, abort_signal.clone()).await?; input.use_embeddings(abort_signal.clone()).await?; start_directive(&config, input, cli.code, abort_signal).await } @@ -320,11 +320,19 @@ async fn create_input( config: &GlobalConfig, text: Option<String>, file: &[String], + abort_signal: AbortSignal, ) -> Result<Input> { let input = if file.is_empty() { Input::from_str(config, &text.unwrap_or_default(), None) } else { - Input::from_files(config, &text.unwrap_or_default(), file.to_vec(), None).await? + Input::from_files_with_spinner( + config, + &text.unwrap_or_default(), + file.to_vec(), + None, + abort_signal, + ) + .await? }; if input.is_empty() { bail!("No input"); |
