From b9b5aece96bb44eb14b05563bf86a6ffddd78720 Mon Sep 17 00:00:00 2001 From: sxyazi Date: Tue, 6 Feb 2024 08:20:56 +0800 Subject: [PATCH] fix: hidden attribute of files on Windows --- Cargo.lock | 128 +++++++++++++++++--------- yazi-core/src/folder/files.rs | 23 +++++ yazi-core/src/manager/watcher.rs | 2 +- yazi-core/src/tab/commands/reveal.rs | 2 +- yazi-fm/src/completion/completion.rs | 11 +-- yazi-fm/src/help/bindings.rs | 20 ++-- yazi-fm/src/help/layout.rs | 17 ++-- yazi-fm/src/input/input.rs | 17 ++-- yazi-fm/src/root.rs | 11 +-- yazi-fm/src/select/select.rs | 11 +-- yazi-fm/src/tasks/layout.rs | 21 ++--- yazi-fm/src/which/cand.rs | 12 +-- yazi-fm/src/which/layout.rs | 6 +- yazi-plugin/src/bindings/range.rs | 3 +- yazi-plugin/src/elements/bar.rs | 2 +- yazi-plugin/src/elements/border.rs | 2 +- yazi-plugin/src/elements/gauge.rs | 4 +- yazi-plugin/src/elements/line.rs | 18 ++-- yazi-plugin/src/elements/list.rs | 2 +- yazi-plugin/src/elements/padding.rs | 11 +-- yazi-plugin/src/elements/paragraph.rs | 2 +- yazi-plugin/src/elements/span.rs | 2 +- yazi-shared/src/fs/file.rs | 13 ++- yazi-shared/src/fs/url.rs | 1 + 24 files changed, 192 insertions(+), 149 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 195393ec7..f5acdfa30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -86,9 +86,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anstyle-parse" @@ -252,6 +252,15 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" +[[package]] +name = "castaway" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc" +dependencies = [ + "rustversion", +] + [[package]] name = "cc" version = "1.0.83" @@ -303,9 +312,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.4.9" +version = "4.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df631ae429f6613fcd3a7c1adbdb65f637271e561b03680adaa6573015dfb106" +checksum = "abb745187d7f4d76267b37485a65e0149edd0e91a4cfcdd3f27524ad86cee9f3" dependencies = [ "clap", ] @@ -371,6 +380,19 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +[[package]] +name = "compact_str" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "ryu", + "static_assertions", +] + [[package]] name = "concurrent-queue" version = "2.4.0" @@ -583,9 +605,9 @@ dependencies = [ [[package]] name = "exr" -version = "1.71.0" +version = "1.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "832a761f35ab3e6664babfbdc6cef35a4860e816ec3916dcfd0882954e98a8a8" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" dependencies = [ "bit_field", "flume", @@ -805,10 +827,11 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "half" -version = "2.2.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" +checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" dependencies = [ + "cfg-if", "crunchy", ] @@ -830,9 +853,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" +checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" [[package]] name = "home" @@ -845,9 +868,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.59" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -918,9 +941,9 @@ checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" [[package]] name = "indexmap" -version = "2.2.1" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433de089bd45971eecf4668ee0ee8f4cec17db4f8bd8f7bc3197a6ce37aa7d9b" +checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520" dependencies = [ "equivalent", "hashbrown", @@ -954,9 +977,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] @@ -1028,9 +1051,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libredox" @@ -1094,9 +1117,9 @@ dependencies = [ [[package]] name = "luajit-src" -version = "210.5.5+f2336c4" +version = "210.5.6+9cc2e42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8bcba9790f4e3b1c1467d75cdd011a63bbe6bc75da95af5d2cb4e3631f939c4" +checksum = "23b365d859c9ffc187f48bb3e25ec80c3b40cf3f68f53544f4adeaee70554157" dependencies = [ "cc", "which", @@ -1135,9 +1158,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", "simd-adler32", @@ -1245,6 +1268,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-traits" version = "0.2.17" @@ -1494,12 +1523,13 @@ dependencies = [ [[package]] name = "ratatui" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5659e52e4ba6e07b2dad9f1158f578ef84a73762625ddb51536019f34d180eb" +checksum = "154b85ef15a5d1719bcaa193c3c81fe645cd120c156874cd660fe49fd21d1373" dependencies = [ "bitflags 2.4.2", "cassowary", + "compact_str", "crossterm", "indoc", "itertools", @@ -1600,9 +1630,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.38.30" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ "bitflags 2.4.2", "errno", @@ -1801,6 +1831,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "str-buf" version = "1.0.6" @@ -1815,18 +1851,18 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "strum" -version = "0.25.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "723b93e8addf9aa965ebe2d11da6d7540fa2283fcea14b3371ff055f7ba13f5f" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.25.3" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +checksum = "7a3417fc93d76740d974a01654a09777cb500428cc874ca9f45edfe0c4d4cd18" dependencies = [ "heck", "proc-macro2", @@ -1920,13 +1956,14 @@ dependencies = [ [[package]] name = "time" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" dependencies = [ "deranged", "itoa", "libc", + "num-conv", "num_threads", "powerfmt", "serde", @@ -1942,10 +1979,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" dependencies = [ + "num-conv", "time-core", ] @@ -1966,9 +2004,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", @@ -2020,9 +2058,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +checksum = "c6a4b9e8023eb94392d3dca65d717c53abc5dad49c07cb65bb8fcd87115fa325" dependencies = [ "indexmap", "serde", @@ -2042,9 +2080,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap", "serde", @@ -2348,15 +2386,15 @@ checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "which" -version = "5.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14" +checksum = "7fa5e0c10bf77f44aac573e498d1a82d5fbd5e91f6fc0a99e7be4b38e85e101c" dependencies = [ "either", "home", "once_cell", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2599,9 +2637,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.35" +version = "0.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1931d78a9c73861da0134f453bb1f790ce49b2e30eba8410b4b79bac72b46a2d" +checksum = "a7cad8365489051ae9f054164e459304af2e7e9bb407c958076c8bf4aef52da5" dependencies = [ "memchr", ] diff --git a/yazi-core/src/folder/files.rs b/yazi-core/src/folder/files.rs index 88088bd61..8ea4748f4 100644 --- a/yazi-core/src/folder/files.rs +++ b/yazi-core/src/folder/files.rs @@ -231,6 +231,7 @@ impl Files { } } + #[cfg(unix)] pub fn update_deleting(&mut self, urls: Vec) { if urls.is_empty() { return; @@ -266,6 +267,28 @@ impl Files { } } + #[cfg(windows)] + pub fn update_deleting(&mut self, urls: Vec) { + macro_rules! go { + ($dist:expr, $src:expr) => { + let len = $dist.len(); + + $dist.retain(|f| !$src.remove(&f.url)); + if $dist.len() != len { + self.revision += 1; + } + }; + } + + let mut urls: BTreeSet<_> = urls.into_iter().collect(); + if !urls.is_empty() { + go!(self.items, urls); + } + if !urls.is_empty() { + go!(self.hidden, urls); + } + } + pub fn update_updating( &mut self, files: BTreeMap, diff --git a/yazi-core/src/manager/watcher.rs b/yazi-core/src/manager/watcher.rs index 1e25317a2..5aece3384 100644 --- a/yazi-core/src/manager/watcher.rs +++ b/yazi-core/src/manager/watcher.rs @@ -143,7 +143,7 @@ impl Watcher { async fn on_changed(rx: UnboundedReceiver) { // TODO: revert this once a new notification is implemented - let rx = UnboundedReceiverStream::new(rx).chunks_timeout(50, Duration::from_millis(20)); + let rx = UnboundedReceiverStream::new(rx).chunks_timeout(100, Duration::from_millis(20)); pin!(rx); while let Some(urls) = rx.next().await { diff --git a/yazi-core/src/tab/commands/reveal.rs b/yazi-core/src/tab/commands/reveal.rs index da932aa06..bb52364be 100644 --- a/yazi-core/src/tab/commands/reveal.rs +++ b/yazi-core/src/tab/commands/reveal.rs @@ -34,7 +34,7 @@ impl Tab { }; self.cd(parent.clone()); - FilesOp::Creating(parent, vec![File::from_dummy(opt.target.clone())]).emit(); + FilesOp::Creating(parent, vec![File::from_dummy(&opt.target)]).emit(); Manager::_hover(Some(opt.target)); } } diff --git a/yazi-fm/src/completion/completion.rs b/yazi-fm/src/completion/completion.rs index 909eb6e17..7a7b16e64 100644 --- a/yazi-fm/src/completion/completion.rs +++ b/yazi-fm/src/completion/completion.rs @@ -1,6 +1,6 @@ use std::path::MAIN_SEPARATOR; -use ratatui::{buffer::Buffer, layout::Rect, widgets::{Block, BorderType, Borders, List, ListItem, Widget}}; +use ratatui::{buffer::Buffer, layout::Rect, widgets::{Block, BorderType, List, ListItem, Widget}}; use yazi_config::{popup::{Offset, Position}, THEME}; use crate::{widgets, Ctx}; @@ -30,9 +30,9 @@ impl<'a> Widget for Completion<'a> { let mut item = ListItem::new(format!(" {} {}", icon, x)); if i == self.cx.completion.rel_cursor() { - item = item.style(THEME.completion.active.into()); + item = item.style(THEME.completion.active); } else { - item = item.style(THEME.completion.inactive.into()); + item = item.style(THEME.completion.inactive); } item @@ -57,10 +57,7 @@ impl<'a> Widget for Completion<'a> { widgets::Clear.render(area, buf); List::new(items) .block( - Block::new() - .borders(Borders::ALL) - .border_type(BorderType::Rounded) - .border_style(THEME.completion.border.into()), + Block::bordered().border_type(BorderType::Rounded).border_style(THEME.completion.border), ) .render(area, buf); } diff --git a/yazi-fm/src/help/bindings.rs b/yazi-fm/src/help/bindings.rs index 1a4471c18..821210202 100644 --- a/yazi-fm/src/help/bindings.rs +++ b/yazi-fm/src/help/bindings.rs @@ -1,4 +1,4 @@ -use ratatui::{buffer::Buffer, layout::{self, Constraint, Direction, Rect}, widgets::{List, ListItem, Widget}}; +use ratatui::{buffer::Buffer, layout::{self, Constraint, Rect}, widgets::{List, ListItem, Widget}}; use yazi_config::THEME; use crate::Ctx; @@ -19,24 +19,20 @@ impl Widget for Bindings<'_> { } // On - let col1 = bindings - .iter() - .map(|c| ListItem::new(c.on()).style(THEME.help.on.into())) - .collect::>(); + let col1 = + bindings.iter().map(|c| ListItem::new(c.on()).style(THEME.help.on)).collect::>(); // Exec - let col2 = bindings - .iter() - .map(|c| ListItem::new(c.exec()).style(THEME.help.exec.into())) - .collect::>(); + let col2 = + bindings.iter().map(|c| ListItem::new(c.exec()).style(THEME.help.exec)).collect::>(); // Desc let col3 = bindings .iter() - .map(|c| ListItem::new(c.desc.as_deref().unwrap_or("-")).style(THEME.help.desc.into())) + .map(|c| ListItem::new(c.desc.as_deref().unwrap_or("-")).style(THEME.help.desc)) .collect::>(); - let chunks = layout::Layout::new(Direction::Horizontal, [ + let chunks = layout::Layout::horizontal([ Constraint::Ratio(2, 10), Constraint::Ratio(3, 10), Constraint::Ratio(5, 10), @@ -46,7 +42,7 @@ impl Widget for Bindings<'_> { let cursor = self.cx.help.rel_cursor() as u16; buf.set_style( Rect { x: area.x, y: area.y + cursor, width: area.width, height: 1 }, - THEME.help.hovered.into(), + THEME.help.hovered, ); List::new(col1).render(chunks[0], buf); diff --git a/yazi-fm/src/help/layout.rs b/yazi-fm/src/help/layout.rs index 09d8a41c8..7326444d9 100644 --- a/yazi-fm/src/help/layout.rs +++ b/yazi-fm/src/help/layout.rs @@ -1,4 +1,4 @@ -use ratatui::{buffer::Buffer, layout::{self, Constraint, Direction, Rect}, widgets::{Paragraph, Widget}}; +use ratatui::{buffer::Buffer, layout::{self, Constraint, Rect}, text::Line, widgets::Widget}; use yazi_config::THEME; use super::Bindings; @@ -14,16 +14,15 @@ impl<'a> Layout<'a> { impl<'a> Widget for Layout<'a> { fn render(self, area: Rect, buf: &mut Buffer) { - let chunks = - layout::Layout::new(Direction::Vertical, [Constraint::Min(0), Constraint::Length(1)]) - .split(area); - + let help = &self.cx.help; widgets::Clear.render(area, buf); - let help = &self.cx.help; - Paragraph::new(help.keyword().unwrap_or_else(|| format!("{}.help", help.layer.to_string()))) - .style(THEME.help.footer.into()) - .render(chunks[1], buf); + let chunks = layout::Layout::vertical([Constraint::Min(0), Constraint::Length(1)]).split(area); + Line::styled( + help.keyword().unwrap_or_else(|| format!("{}.help", help.layer.to_string())), + THEME.help.footer, + ) + .render(chunks[1], buf); Bindings::new(self.cx).render(chunks[0], buf); } diff --git a/yazi-fm/src/input/input.rs b/yazi-fm/src/input/input.rs index 69dc5ded0..f68f7bec3 100644 --- a/yazi-fm/src/input/input.rs +++ b/yazi-fm/src/input/input.rs @@ -1,7 +1,7 @@ use std::ops::Range; use anyhow::{bail, Result}; -use ratatui::{buffer::Buffer, layout::Rect, text::Line, widgets::{Block, BorderType, Borders, Paragraph, Widget}}; +use ratatui::{buffer::Buffer, layout::Rect, text::Line, widgets::{Block, BorderType, Paragraph, Widget}}; use syntect::easy::HighlightLines; use yazi_config::THEME; use yazi_core::input::InputMode; @@ -40,17 +40,12 @@ impl<'a> Widget for Input<'a> { widgets::Clear.render(area, buf); Paragraph::new(self.highlighted_value().unwrap_or_else(|_| Line::from(input.value()))) .block( - Block::new() - .borders(Borders::ALL) + Block::bordered() .border_type(BorderType::Rounded) - .border_style(THEME.input.border.into()) - .title({ - let mut line = Line::from(input.title.as_str()); - line.patch_style(THEME.input.title.into()); - line - }), + .border_style(THEME.input.border) + .title(Line::styled(&input.title, THEME.input.title)), ) - .style(THEME.input.value.into()) + .style(THEME.input.value) .render(area, buf); if let Some(Range { start, end }) = input.selected() { @@ -59,7 +54,7 @@ impl<'a> Widget for Input<'a> { buf.set_style( Rect { x, y, width: (end - start).min(win.width - x), height: 1.min(win.height - y) }, - THEME.input.selected.into(), + THEME.input.selected, ) } diff --git a/yazi-fm/src/root.rs b/yazi-fm/src/root.rs index 12ff20741..057e0b3b2 100644 --- a/yazi-fm/src/root.rs +++ b/yazi-fm/src/root.rs @@ -1,6 +1,6 @@ use std::sync::atomic::AtomicBool; -use ratatui::{buffer::Buffer, layout::{Constraint, Direction, Layout, Rect}, widgets::Widget}; +use ratatui::{buffer::Buffer, layout::{Constraint, Layout, Rect}, widgets::Widget}; use super::{completion, input, select, tasks, which}; use crate::{components, help, Ctx}; @@ -17,12 +17,9 @@ impl<'a> Root<'a> { impl<'a> Widget for Root<'a> { fn render(self, area: Rect, buf: &mut Buffer) { - let chunks = Layout::new(Direction::Vertical, [ - Constraint::Length(1), - Constraint::Min(0), - Constraint::Length(1), - ]) - .split(area); + let chunks = + Layout::vertical([Constraint::Length(1), Constraint::Min(0), Constraint::Length(1)]) + .split(area); components::Header.render(chunks[0], buf); components::Manager.render(chunks[1], buf); diff --git a/yazi-fm/src/select/select.rs b/yazi-fm/src/select/select.rs index a15e633d3..5a09f228a 100644 --- a/yazi-fm/src/select/select.rs +++ b/yazi-fm/src/select/select.rs @@ -1,4 +1,4 @@ -use ratatui::{buffer::Buffer, layout::Rect, widgets::{Block, BorderType, Borders, List, ListItem, Widget}}; +use ratatui::{buffer::Buffer, layout::Rect, widgets::{Block, BorderType, List, ListItem, Widget}}; use yazi_config::THEME; use crate::{widgets, Ctx}; @@ -22,21 +22,20 @@ impl<'a> Widget for Select<'a> { .enumerate() .map(|(i, v)| { if i != select.rel_cursor() { - return ListItem::new(format!(" {v}")).style(THEME.select.inactive.into()); + return ListItem::new(format!(" {v}")).style(THEME.select.inactive); } - ListItem::new(format!(" {v}")).style(THEME.select.active.into()) + ListItem::new(format!(" {v}")).style(THEME.select.active) }) .collect::>(); widgets::Clear.render(area, buf); List::new(items) .block( - Block::new() + Block::bordered() .title(select.title()) - .borders(Borders::ALL) .border_type(BorderType::Rounded) - .border_style(THEME.select.border.into()), + .border_style(THEME.select.border), ) .render(area, buf); } diff --git a/yazi-fm/src/tasks/layout.rs b/yazi-fm/src/tasks/layout.rs index 7f1b9cf0e..84b2613c5 100644 --- a/yazi-fm/src/tasks/layout.rs +++ b/yazi-fm/src/tasks/layout.rs @@ -1,4 +1,4 @@ -use ratatui::{buffer::Buffer, layout::{self, Alignment, Constraint, Direction, Rect}, text::Line, widgets::{Block, BorderType, Borders, List, ListItem, Padding, Widget}}; +use ratatui::{buffer::Buffer, layout::{self, Alignment, Constraint, Rect}, text::Line, widgets::{Block, BorderType, List, ListItem, Padding, Widget}}; use yazi_config::THEME; use yazi_core::tasks::TASKS_PERCENT; @@ -12,14 +12,14 @@ impl<'a> Layout<'a> { pub(crate) fn new(cx: &'a Ctx) -> Self { Self { cx } } pub(super) fn area(area: Rect) -> Rect { - let chunk = layout::Layout::new(Direction::Vertical, [ + let chunk = layout::Layout::vertical([ Constraint::Percentage((100 - TASKS_PERCENT) / 2), Constraint::Percentage(TASKS_PERCENT), Constraint::Percentage((100 - TASKS_PERCENT) / 2), ]) .split(area)[1]; - layout::Layout::new(Direction::Horizontal, [ + layout::Layout::horizontal([ Constraint::Percentage((100 - TASKS_PERCENT) / 2), Constraint::Percentage(TASKS_PERCENT), Constraint::Percentage((100 - TASKS_PERCENT) / 2), @@ -33,17 +33,12 @@ impl<'a> Widget for Layout<'a> { let area = Self::area(area); widgets::Clear.render(area, buf); - let block = Block::new() - .title({ - let mut line = Line::from("Tasks"); - line.patch_style(THEME.tasks.title.into()); - line - }) + let block = Block::bordered() + .title(Line::styled("Tasks", THEME.tasks.title)) .title_alignment(Alignment::Center) - .padding(Padding::new(0, 0, 1, 1)) - .borders(Borders::ALL) + .padding(Padding::symmetric(1, 1)) .border_type(BorderType::Rounded) - .border_style(THEME.tasks.border.into()); + .border_style(THEME.tasks.border); block.clone().render(area, buf); let tasks = &self.cx.tasks; @@ -54,7 +49,7 @@ impl<'a> Widget for Layout<'a> { .map(|(i, v)| { let mut item = ListItem::new(v.name.clone()); if i == tasks.cursor { - item = item.style(THEME.tasks.hovered.into()); + item = item.style(THEME.tasks.hovered); } item }) diff --git a/yazi-fm/src/which/cand.rs b/yazi-fm/src/which/cand.rs index 75f9ced13..a046a2a9b 100644 --- a/yazi-fm/src/which/cand.rs +++ b/yazi-fm/src/which/cand.rs @@ -1,4 +1,4 @@ -use ratatui::{buffer::Buffer, layout::Rect, text::{Line, Span}, widgets::{Paragraph, Widget}}; +use ratatui::{buffer::Buffer, layout::Rect, text::{Line, Span}, widgets::Widget}; use yazi_config::{keymap::Control, THEME}; pub(super) struct Cand<'a> { @@ -23,17 +23,17 @@ impl Widget for Cand<'_> { spans.push(Span::raw(" ".repeat(10usize.saturating_sub(keys.join("").len())))); // First key - spans.push(Span::styled(keys[0].clone(), THEME.which.cand.into())); + spans.push(Span::styled(keys[0].clone(), THEME.which.cand)); // Rest keys - spans.extend(keys.iter().skip(1).map(|k| Span::styled(k, THEME.which.rest.into()))); + spans.extend(keys.iter().skip(1).map(|k| Span::styled(k, THEME.which.rest))); // Separator - spans.push(Span::styled(&THEME.which.separator, THEME.which.separator_style.into())); + spans.push(Span::styled(&THEME.which.separator, THEME.which.separator_style)); // Description - spans.push(Span::styled(self.cand.desc_or_exec(), THEME.which.desc.into())); + spans.push(Span::styled(self.cand.desc_or_exec(), THEME.which.desc)); - Paragraph::new(Line::from(spans)).render(area, buf); + Line::from(spans).render(area, buf); } } diff --git a/yazi-fm/src/which/layout.rs b/yazi-fm/src/which/layout.rs index 401fea0c1..36623ab31 100644 --- a/yazi-fm/src/which/layout.rs +++ b/yazi-fm/src/which/layout.rs @@ -1,4 +1,4 @@ -use ratatui::{buffer::Buffer, layout, layout::{Constraint, Direction, Rect}, widgets::{Block, Widget}}; +use ratatui::{buffer::Buffer, layout, layout::{Constraint, Rect}, widgets::{Block, Widget}}; use yazi_config::THEME; use super::Cand; @@ -38,7 +38,7 @@ impl Widget for Which<'_> { let chunks = { use Constraint::*; - layout::Layout::new(Direction::Horizontal, match cols { + layout::Layout::horizontal(match cols { 1 => &[Ratio(1, 1)] as &[Constraint], 2 => &[Ratio(1, 2), Ratio(1, 2)], _ => &[Ratio(1, 3), Ratio(1, 3), Ratio(1, 3)], @@ -47,7 +47,7 @@ impl Widget for Which<'_> { }; widgets::Clear.render(area, buf); - Block::new().style(THEME.which.mask.into()).render(area, buf); + Block::new().style(THEME.which.mask).render(area, buf); for y in 0..area.height { for (x, chunk) in chunks.iter().enumerate() { diff --git a/yazi-plugin/src/bindings/range.rs b/yazi-plugin/src/bindings/range.rs index b1ee2a7ac..5d7a37dbe 100644 --- a/yazi-plugin/src/bindings/range.rs +++ b/yazi-plugin/src/bindings/range.rs @@ -11,7 +11,6 @@ where T: IntoLua<'lua>, { fn into_lua(self, lua: &'lua mlua::Lua) -> mlua::Result { - let tbl = lua.create_sequence_from([self.0.start, self.0.end])?; - tbl.into_lua(lua) + lua.create_sequence_from([self.0.start, self.0.end])?.into_lua(lua) } } diff --git a/yazi-plugin/src/elements/bar.rs b/yazi-plugin/src/elements/bar.rs index 81c83d5eb..4abd8ffc1 100644 --- a/yazi-plugin/src/elements/bar.rs +++ b/yazi-plugin/src/elements/bar.rs @@ -51,7 +51,7 @@ impl UserData for Bar { let mut me = ud.borrow_mut::()?; match value { Value::Nil => me.style = None, - Value::Table(tbl) => me.style = Some(Style::from(tbl).0), + Value::Table(tb) => me.style = Some(Style::from(tb).0), Value::UserData(ud) => me.style = Some(ud.borrow::