chore: bump version to 0.2.3

This commit is contained in:
sxyazi 2024-02-07 11:18:23 +08:00
parent fab5bc16cc
commit 0d7e977076
No known key found for this signature in database
14 changed files with 104 additions and 70 deletions

35
Cargo.lock generated
View file

@ -1960,6 +1960,26 @@ dependencies = [
"weezl", "weezl",
] ]
[[package]]
name = "tikv-jemalloc-sys"
version = "0.5.4+5.3.0-patched"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9402443cb8fd499b6f327e40565234ff34dbda27460c5b47db0db77443dd85d1"
dependencies = [
"cc",
"libc",
]
[[package]]
name = "tikv-jemallocator"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "965fe0c26be5c56c94e38ba547249074803efd52adfb66de62107d95aab3eaca"
dependencies = [
"libc",
"tikv-jemalloc-sys",
]
[[package]] [[package]]
name = "time" name = "time"
version = "0.3.34" version = "0.3.34"
@ -2652,7 +2672,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-adaptor" name = "yazi-adaptor"
version = "0.2.2" version = "0.2.3"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"arc-swap", "arc-swap",
@ -2671,7 +2691,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-config" name = "yazi-config"
version = "0.2.2" version = "0.2.3"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"arc-swap", "arc-swap",
@ -2696,7 +2716,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-core" name = "yazi-core"
version = "0.2.2" version = "0.2.3"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"base64", "base64",
@ -2725,7 +2745,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-fm" name = "yazi-fm"
version = "0.2.2" version = "0.2.3"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"better-panic", "better-panic",
@ -2737,6 +2757,7 @@ dependencies = [
"ratatui", "ratatui",
"signal-hook-tokio", "signal-hook-tokio",
"syntect", "syntect",
"tikv-jemallocator",
"tokio", "tokio",
"tokio-util", "tokio-util",
"tracing", "tracing",
@ -2753,7 +2774,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-plugin" name = "yazi-plugin"
version = "0.2.2" version = "0.2.3"
dependencies = [ dependencies = [
"ansi-to-tui", "ansi-to-tui",
"anyhow", "anyhow",
@ -2788,7 +2809,7 @@ checksum = "f4b6c8e12e39ac0f79fa96f36e5b88e0da8d230691abd729eec709b43c74f632"
[[package]] [[package]]
name = "yazi-scheduler" name = "yazi-scheduler"
version = "0.2.2" version = "0.2.3"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-priority-channel", "async-priority-channel",
@ -2809,7 +2830,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-shared" name = "yazi-shared"
version = "0.2.2" version = "0.2.3"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bitflags 2.4.2", "bitflags 2.4.2",

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-adaptor" name = "yazi-adaptor"
version = "0.2.2" version = "0.2.3"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -9,8 +9,8 @@ homepage = "https://yazi-rs.github.io"
repository = "https://github.com/sxyazi/yazi" repository = "https://github.com/sxyazi/yazi"
[dependencies] [dependencies]
yazi-config = { path = "../yazi-config", version = "0.2.2" } yazi-config = { path = "../yazi-config", version = "0.2.3" }
yazi-shared = { path = "../yazi-shared", version = "0.2.2" } yazi-shared = { path = "../yazi-shared", version = "0.2.3" }
# External dependencies # External dependencies
anyhow = "^1" anyhow = "^1"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-config" name = "yazi-config"
version = "0.2.2" version = "0.2.3"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -9,7 +9,7 @@ homepage = "https://yazi-rs.github.io"
repository = "https://github.com/sxyazi/yazi" repository = "https://github.com/sxyazi/yazi"
[dependencies] [dependencies]
yazi-shared = { path = "../yazi-shared", version = "0.2.2" } yazi-shared = { path = "../yazi-shared", version = "0.2.3" }
# External dependencies # External dependencies
anyhow = "^1" anyhow = "^1"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-core" name = "yazi-core"
version = "0.2.2" version = "0.2.3"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -9,11 +9,11 @@ homepage = "https://yazi-rs.github.io"
repository = "https://github.com/sxyazi/yazi" repository = "https://github.com/sxyazi/yazi"
[dependencies] [dependencies]
yazi-adaptor = { path = "../yazi-adaptor", version = "0.2.2" } yazi-adaptor = { path = "../yazi-adaptor", version = "0.2.3" }
yazi-config = { path = "../yazi-config", version = "0.2.2" } yazi-config = { path = "../yazi-config", version = "0.2.3" }
yazi-plugin = { path = "../yazi-plugin", version = "0.2.2" } yazi-plugin = { path = "../yazi-plugin", version = "0.2.3" }
yazi-scheduler = { path = "../yazi-scheduler", version = "0.2.2" } yazi-scheduler = { path = "../yazi-scheduler", version = "0.2.3" }
yazi-shared = { path = "../yazi-shared", version = "0.2.2" } yazi-shared = { path = "../yazi-shared", version = "0.2.3" }
# External dependencies # External dependencies
anyhow = "^1" anyhow = "^1"

View file

@ -208,7 +208,7 @@ impl Files {
} }
macro_rules! go { macro_rules! go {
($dist:expr, $src:expr) => { ($dist:expr, $src:expr, $inc:literal) => {
let mut todo: BTreeMap<_, _> = $src.into_iter().map(|f| (f.url(), f)).collect(); let mut todo: BTreeMap<_, _> = $src.into_iter().map(|f| (f.url(), f)).collect();
for f in &$dist { for f in &$dist {
if todo.remove(&f.url).is_some() && todo.is_empty() { if todo.remove(&f.url).is_some() && todo.is_empty() {
@ -216,7 +216,7 @@ impl Files {
} }
} }
if !todo.is_empty() { if !todo.is_empty() {
self.revision += 1; self.revision += $inc;
$dist.extend(todo.into_values()); $dist.extend(todo.into_values());
} }
}; };
@ -224,10 +224,10 @@ impl Files {
let (hidden, items) = self.split_files(files); let (hidden, items) = self.split_files(files);
if !items.is_empty() { if !items.is_empty() {
go!(self.items, items); go!(self.items, items, 1);
} }
if !hidden.is_empty() { if !hidden.is_empty() {
go!(self.hidden, hidden); go!(self.hidden, hidden, 0);
} }
} }
@ -238,13 +238,13 @@ impl Files {
} }
macro_rules! go { macro_rules! go {
($dist:expr, $src:expr) => { ($dist:expr, $src:expr, $inc:literal) => {
let mut todo: BTreeSet<_> = $src.into_iter().collect(); let mut todo: BTreeSet<_> = $src.into_iter().collect();
let len = $dist.len(); let len = $dist.len();
$dist.retain(|f| !todo.remove(&f.url)); $dist.retain(|f| !todo.remove(&f.url));
if $dist.len() != len { if $dist.len() != len {
self.revision += 1; self.revision += $inc;
} }
}; };
} }
@ -260,32 +260,32 @@ impl Files {
}; };
if !items.is_empty() { if !items.is_empty() {
go!(self.items, items); go!(self.items, items, 1);
} }
if !hidden.is_empty() { if !hidden.is_empty() {
go!(self.hidden, hidden); go!(self.hidden, hidden, 0);
} }
} }
#[cfg(windows)] #[cfg(windows)]
pub fn update_deleting(&mut self, urls: Vec<Url>) { pub fn update_deleting(&mut self, urls: Vec<Url>) {
macro_rules! go { macro_rules! go {
($dist:expr, $src:expr) => { ($dist:expr, $src:expr, $inc:literal) => {
let len = $dist.len(); let len = $dist.len();
$dist.retain(|f| !$src.remove(&f.url)); $dist.retain(|f| !$src.remove(&f.url));
if $dist.len() != len { if $dist.len() != len {
self.revision += 1; self.revision += $inc;
} }
}; };
} }
let mut urls: BTreeSet<_> = urls.into_iter().collect(); let mut urls: BTreeSet<_> = urls.into_iter().collect();
if !urls.is_empty() { if !urls.is_empty() {
go!(self.items, urls); go!(self.items, urls, 1);
} }
if !urls.is_empty() { if !urls.is_empty() {
go!(self.hidden, urls); go!(self.hidden, urls, 0);
} }
} }
@ -298,7 +298,7 @@ impl Files {
} }
macro_rules! go { macro_rules! go {
($dist:expr, $src:expr) => { ($dist:expr, $src:expr, $inc:literal) => {
let len = $src.len(); let len = $src.len();
for i in 0..$dist.len() { for i in 0..$dist.len() {
if let Some(f) = $src.remove(&$dist[i].url) { if let Some(f) = $src.remove(&$dist[i].url) {
@ -309,7 +309,7 @@ impl Files {
} }
} }
if $src.len() != len { if $src.len() != len {
self.revision += 1; self.revision += $inc;
} }
}; };
} }
@ -326,10 +326,10 @@ impl Files {
}; };
if !items.is_empty() { if !items.is_empty() {
go!(self.items, items); go!(self.items, items, 1);
} }
if !hidden.is_empty() { if !hidden.is_empty() {
go!(self.hidden, hidden); go!(self.hidden, hidden, 0);
} }
(hidden, items) (hidden, items)
} }

View file

@ -31,13 +31,17 @@ impl Manager {
} }
pub fn peek(&mut self, opt: impl Into<Opt>) { pub fn peek(&mut self, opt: impl Into<Opt>) {
let Some(hovered) = self.hovered() else { let Some(hovered) = self.hovered().cloned() else {
return render!(self.active_mut().preview.reset()); return render!(self.active_mut().preview.reset());
}; };
let hovered = hovered.clone(); let folder = Some(())
.filter(|_| hovered.is_dir())
.and_then(|_| self.active().history.get(&hovered.url))
.map(|f| (f.offset, f.mtime));
if !self.active().preview.same_url(&hovered.url) { if !self.active().preview.same_url(&hovered.url) {
self.active_mut().preview.skip = 0; self.active_mut().preview.skip = folder.map(|f| f.0).unwrap_or_default();
render!(self.active_mut().preview.reset()); render!(self.active_mut().preview.reset());
} }
@ -56,13 +60,12 @@ impl Manager {
} }
if hovered.is_dir() { if hovered.is_dir() {
let mtime = self.active().history.get(&hovered.url).and_then(|f| f.mtime); self.active_mut().preview.go_folder(hovered, folder.and_then(|f| f.1), opt.force);
self.active_mut().preview.go_folder(hovered, mtime, opt.force);
return; return;
} }
if let Some(m) = self.mimetype.get(&hovered.url).cloned() { if let Some(mime) = self.mimetype.get(&hovered.url).cloned() {
self.active_mut().preview.go(hovered, &m, opt.force); self.active_mut().preview.go(hovered, &mime, opt.force);
} else { } else {
render!(self.active_mut().preview.reset()); render!(self.active_mut().preview.reset());
} }

View file

@ -47,6 +47,7 @@ impl Manager {
} }
let file = File::from(new.clone()).await?; let file = File::from(new.clone()).await?;
FilesOp::Deleting(file.parent().unwrap(), vec![new.clone()]).emit();
FilesOp::Upserting(file.parent().unwrap(), BTreeMap::from_iter([(old, file)])).emit(); FilesOp::Upserting(file.parent().unwrap(), BTreeMap::from_iter([(old, file)])).emit();
Ok(Self::_hover(Some(new))) Ok(Self::_hover(Some(new)))
} }
@ -160,7 +161,7 @@ impl Manager {
} }
let mut buf = [0; 10]; let mut buf = [0; 10];
stdin().read(&mut buf).await.ok(); _ = stdin().read(&mut buf).await?;
if buf[0] != b'y' && buf[0] != b'Y' { if buf[0] != b'y' && buf[0] != b'Y' {
return Ok(()); return Ok(());
} }

View file

@ -37,7 +37,7 @@ impl Tasks {
enable_raw_mode().ok(); enable_raw_mode().ok();
let mut stdin = stdin(); let mut stdin = stdin();
let mut quit = [0; 10]; let mut answer = 0;
loop { loop {
select! { select! {
Some(line) = rx.recv() => { Some(line) = rx.recv() => {
@ -51,8 +51,9 @@ impl Tasks {
break; break;
} }
}, },
Ok(_) = stdin.read(&mut quit) => { result = stdin.read_u8() => {
if quit[0] == b'q' { answer = result.unwrap_or(b'q');
if answer == b'q' {
break; break;
} }
} }
@ -62,8 +63,8 @@ impl Tasks {
if let Some(task) = scheduler.running.lock().get_mut(id) { if let Some(task) = scheduler.running.lock().get_mut(id) {
task.logger = None; task.logger = None;
} }
while quit[0] != b'q' { while answer != b'q' {
stdin.read(&mut quit).await.ok(); answer = stdin.read_u8().await.unwrap_or(b'q');
} }
}); });
} }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-fm" name = "yazi-fm"
version = "0.2.2" version = "0.2.3"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -9,12 +9,12 @@ homepage = "https://yazi-rs.github.io"
repository = "https://github.com/sxyazi/yazi" repository = "https://github.com/sxyazi/yazi"
[dependencies] [dependencies]
yazi-adaptor = { path = "../yazi-adaptor", version = "0.2.2" } yazi-adaptor = { path = "../yazi-adaptor", version = "0.2.3" }
yazi-config = { path = "../yazi-config", version = "0.2.2" } yazi-config = { path = "../yazi-config", version = "0.2.3" }
yazi-core = { path = "../yazi-core", version = "0.2.2" } yazi-core = { path = "../yazi-core", version = "0.2.3" }
yazi-plugin = { path = "../yazi-plugin", version = "0.2.2" } yazi-plugin = { path = "../yazi-plugin", version = "0.2.3" }
yazi-scheduler = { path = "../yazi-scheduler", version = "0.2.2" } yazi-scheduler = { path = "../yazi-scheduler", version = "0.2.3" }
yazi-shared = { path = "../yazi-shared", version = "0.2.2" } yazi-shared = { path = "../yazi-shared", version = "0.2.3" }
# External dependencies # External dependencies
anyhow = "^1" anyhow = "^1"
@ -37,6 +37,7 @@ tracing-subscriber = "^0"
[target."cfg(unix)".dependencies] [target."cfg(unix)".dependencies]
libc = "^0" libc = "^0"
signal-hook-tokio = { version = "^0", features = [ "futures-v0_3" ] } signal-hook-tokio = { version = "^0", features = [ "futures-v0_3" ] }
tikv-jemallocator = "^0"
[[bin]] [[bin]]
name = "yazi" name = "yazi"

View file

@ -114,8 +114,8 @@ impl<'a, 'b> Folder<'a, 'b> {
Ok(if !cx.manager.active().mode.is_visual() { Ok(if !cx.manager.active().mode.is_visual() {
selected selected
} else { } else {
let idx: usize = me.named_user_value("idx")?; let pos: isize = me.named_user_value("pos")?;
cx.manager.active().mode.pending(folder.offset + idx, selected) cx.manager.active().mode.pending((folder.offset as isize + pos) as usize, selected)
}) })
}); });
reg.add_function("found", |lua, me: AnyUserData| { reg.add_function("found", |lua, me: AnyUserData| {
@ -171,21 +171,24 @@ impl<'a, 'b> Folder<'a, 'b> {
.skip(window.0) .skip(window.0)
.take(window.1) .take(window.1)
.enumerate() .enumerate()
.filter_map(|(i, f)| self.file(i, f).ok()) .filter_map(|(i, f)| self.file(i as isize, f).ok())
.collect::<Vec<_>>(), .collect::<Vec<_>>(),
)?; )?;
ud.set_named_user_value("files", self.scope.create_any_userdata_ref(&self.inner.files)?)?; ud.set_named_user_value("files", self.scope.create_any_userdata_ref(&self.inner.files)?)?;
ud.set_named_user_value( ud.set_named_user_value(
"hovered", "hovered",
self.inner.hovered().and_then(|h| self.file(self.inner.cursor - window.0, h).ok()), self
.inner
.hovered()
.and_then(|h| self.file(self.inner.cursor as isize - window.0 as isize, h).ok()),
)?; )?;
Ok(ud) Ok(ud)
} }
fn file(&self, idx: usize, inner: &'a yazi_shared::fs::File) -> mlua::Result<AnyUserData<'a>> { fn file(&self, pos: isize, inner: &'a yazi_shared::fs::File) -> mlua::Result<AnyUserData<'a>> {
let ud = self.scope.create_any_userdata_ref(inner)?; let ud = self.scope.create_any_userdata_ref(inner)?;
ud.set_named_user_value("idx", idx)?; ud.set_named_user_value("pos", pos)?;
ud.set_named_user_value("folder", self.scope.create_any_userdata_ref(self.inner)?)?; ud.set_named_user_value("folder", self.scope.create_any_userdata_ref(self.inner)?)?;
Ok(ud) Ok(ud)

View file

@ -1,6 +1,10 @@
#![allow(clippy::module_inception)] #![allow(clippy::module_inception)]
#![allow(clippy::unit_arg)] #![allow(clippy::unit_arg)]
#[cfg(unix)]
#[global_allocator]
static GLOBAL: tikv_jemallocator::Jemalloc = tikv_jemallocator::Jemalloc;
mod app; mod app;
mod completion; mod completion;
mod components; mod components;

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-plugin" name = "yazi-plugin"
version = "0.2.2" version = "0.2.3"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -9,9 +9,9 @@ homepage = "https://yazi-rs.github.io"
repository = "https://github.com/sxyazi/yazi" repository = "https://github.com/sxyazi/yazi"
[dependencies] [dependencies]
yazi-adaptor = { path = "../yazi-adaptor", version = "0.2.2" } yazi-adaptor = { path = "../yazi-adaptor", version = "0.2.3" }
yazi-config = { path = "../yazi-config", version = "0.2.2" } yazi-config = { path = "../yazi-config", version = "0.2.3" }
yazi-shared = { path = "../yazi-shared", version = "0.2.2" } yazi-shared = { path = "../yazi-shared", version = "0.2.3" }
# External dependencies # External dependencies
ansi-to-tui = "^3" ansi-to-tui = "^3"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-scheduler" name = "yazi-scheduler"
version = "0.2.2" version = "0.2.3"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -9,10 +9,10 @@ homepage = "https://yazi-rs.github.io"
repository = "https://github.com/sxyazi/yazi" repository = "https://github.com/sxyazi/yazi"
[dependencies] [dependencies]
yazi-adaptor = { path = "../yazi-adaptor", version = "0.2.2" } yazi-adaptor = { path = "../yazi-adaptor", version = "0.2.3" }
yazi-config = { path = "../yazi-config", version = "0.2.2" } yazi-config = { path = "../yazi-config", version = "0.2.3" }
yazi-shared = { path = "../yazi-shared", version = "0.2.2" } yazi-shared = { path = "../yazi-shared", version = "0.2.3" }
yazi-plugin = { path = "../yazi-plugin", version = "0.2.2" } yazi-plugin = { path = "../yazi-plugin", version = "0.2.3" }
# External dependencies # External dependencies
anyhow = "^1" anyhow = "^1"

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-shared" name = "yazi-shared"
version = "0.2.2" version = "0.2.3"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]