mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
feat: reduce terminal response wait timeout (#2314)
This commit is contained in:
parent
793c90f021
commit
d75a5d6628
2 changed files with 18 additions and 33 deletions
|
|
@ -1,9 +1,9 @@
|
||||||
use std::{io::{LineWriter, Read, stderr}, time::Duration};
|
use std::{io::{LineWriter, stderr}, time::Duration};
|
||||||
|
|
||||||
use anyhow::{Result, bail};
|
use anyhow::{Result, bail};
|
||||||
use crossterm::{cursor::{RestorePosition, SavePosition}, execute, style::Print, terminal::{disable_raw_mode, enable_raw_mode}};
|
use crossterm::{cursor::{RestorePosition, SavePosition}, execute, style::Print, terminal::{disable_raw_mode, enable_raw_mode}};
|
||||||
use scopeguard::defer;
|
use scopeguard::defer;
|
||||||
use tokio::{io::{AsyncReadExt, BufReader}, time::timeout};
|
use tokio::{io::{AsyncReadExt, BufReader}, time::{sleep, timeout}};
|
||||||
use tracing::{debug, error, warn};
|
use tracing::{debug, error, warn};
|
||||||
use yazi_shared::Either;
|
use yazi_shared::Either;
|
||||||
|
|
||||||
|
|
@ -125,17 +125,18 @@ impl Emulator {
|
||||||
Ok(())
|
Ok(())
|
||||||
};
|
};
|
||||||
|
|
||||||
match timeout(Duration::from_secs(5), read).await {
|
let h = tokio::spawn(async move {
|
||||||
|
sleep(Duration::from_millis(300)).await;
|
||||||
|
Self::error_to_user().ok();
|
||||||
|
});
|
||||||
|
|
||||||
|
match timeout(Duration::from_secs(2), read).await {
|
||||||
Ok(Ok(())) => debug!("read_until_da1: {buf:?}"),
|
Ok(Ok(())) => debug!("read_until_da1: {buf:?}"),
|
||||||
Err(e) => {
|
Err(e) => error!("read_until_da1 timed out: {buf:?}, error: {e:?}"),
|
||||||
error!("read_until_da1 timed out: {buf:?}, error: {e:?}");
|
Ok(Err(e)) => error!("read_until_da1 failed: {buf:?}, error: {e:?}"),
|
||||||
Self::error_to_user().ok();
|
|
||||||
}
|
|
||||||
Ok(Err(e)) => {
|
|
||||||
error!("read_until_da1 failed: {buf:?}, error: {e:?}");
|
|
||||||
Self::error_to_user().ok();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h.abort();
|
||||||
String::from_utf8_lossy(&buf).into_owned()
|
String::from_utf8_lossy(&buf).into_owned()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -156,21 +157,15 @@ impl Emulator {
|
||||||
Ok(())
|
Ok(())
|
||||||
};
|
};
|
||||||
|
|
||||||
match timeout(Duration::from_secs(5), read).await {
|
match timeout(Duration::from_millis(500), read).await {
|
||||||
Ok(Ok(())) => debug!("read_until_dsr: {buf:?}"),
|
Ok(Ok(())) => debug!("read_until_dsr: {buf:?}"),
|
||||||
Err(e) => {
|
Err(e) => error!("read_until_dsr timed out: {buf:?}, error: {e:?}"),
|
||||||
error!("read_until_dsr timed out: {buf:?}, error: {e:?}");
|
Ok(Err(e)) => error!("read_until_dsr failed: {buf:?}, error: {e:?}"),
|
||||||
Self::error_to_user().ok();
|
|
||||||
}
|
|
||||||
Ok(Err(e)) => {
|
|
||||||
error!("read_until_dsr failed: {buf:?}, error: {e:?}");
|
|
||||||
Self::error_to_user().ok();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
String::from_utf8_lossy(&buf).into_owned()
|
String::from_utf8_lossy(&buf).into_owned()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn error_to_user() -> Result<()> {
|
fn error_to_user() -> Result<(), std::io::Error> {
|
||||||
use crossterm::style::{Attribute, Color, Print, ResetColor, SetAttributes, SetForegroundColor};
|
use crossterm::style::{Attribute, Color, Print, ResetColor, SetAttributes, SetForegroundColor};
|
||||||
crossterm::execute!(
|
crossterm::execute!(
|
||||||
std::io::stderr(),
|
std::io::stderr(),
|
||||||
|
|
@ -184,15 +179,7 @@ impl Emulator {
|
||||||
Print(
|
Print(
|
||||||
"Please check your terminal environment as per: https://yazi-rs.github.io/docs/faq#trt\r\n"
|
"Please check your terminal environment as per: https://yazi-rs.github.io/docs/faq#trt\r\n"
|
||||||
),
|
),
|
||||||
//
|
)
|
||||||
SetAttributes(Attribute::Bold.into()),
|
|
||||||
SetAttributes(Attribute::Reverse.into()),
|
|
||||||
Print("Press any key to continue...\r\n"),
|
|
||||||
SetAttributes(Attribute::Reset.into()),
|
|
||||||
)?;
|
|
||||||
|
|
||||||
std::io::stdin().read_exact(&mut [0])?;
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cell_size(resp: &str) -> Option<(u16, u16)> {
|
fn cell_size(resp: &str) -> Option<(u16, u16)> {
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
use mlua::{ExternalError, ExternalResult, FromLua, IntoLua, Lua, ObjectLike, Table, Value};
|
use mlua::{ExternalError, ExternalResult, FromLua, IntoLua, Lua, ObjectLike, Table, Value};
|
||||||
use tokio::runtime::Handle;
|
use tokio::runtime::Handle;
|
||||||
use yazi_config::LAYOUT;
|
|
||||||
use yazi_dds::Sendable;
|
use yazi_dds::Sendable;
|
||||||
use yazi_shared::event::CmdCow;
|
use yazi_shared::event::CmdCow;
|
||||||
|
|
||||||
use super::slim_lua;
|
use super::slim_lua;
|
||||||
use crate::{Error, elements::Rect, file::File, loader::LOADER};
|
use crate::{Error, file::File, loader::LOADER};
|
||||||
|
|
||||||
pub async fn fetch(
|
pub async fn fetch(
|
||||||
cmd: CmdCow,
|
cmd: CmdCow,
|
||||||
|
|
@ -27,7 +26,6 @@ pub async fn fetch(
|
||||||
Handle::current().block_on(plugin.call_async_method(
|
Handle::current().block_on(plugin.call_async_method(
|
||||||
"fetch",
|
"fetch",
|
||||||
lua.create_table_from([
|
lua.create_table_from([
|
||||||
("area", Rect::from(LAYOUT.get().preview).into_lua(&lua)?),
|
|
||||||
("args", Sendable::args_to_table_ref(&lua, &cmd.args)?.into_lua(&lua)?),
|
("args", Sendable::args_to_table_ref(&lua, &cmd.args)?.into_lua(&lua)?),
|
||||||
("files", lua.create_sequence_from(files.into_iter().map(File))?.into_lua(&lua)?),
|
("files", lua.create_sequence_from(files.into_iter().map(File))?.into_lua(&lua)?),
|
||||||
])?,
|
])?,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue