From 5a4e6e40684751e600f927aa9ed32e8baabe66f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E9=9B=85=20=C2=B7=20Misaki=20Masa?= Date: Wed, 14 May 2025 01:44:58 +0800 Subject: [PATCH] feat: truncate long items in the file list (#2754) --- Cargo.lock | 36 +++++++++++------------ yazi-adapter/Cargo.toml | 10 +++---- yazi-binding/Cargo.toml | 8 ++--- yazi-boot/Cargo.toml | 14 ++++----- yazi-cli/Cargo.toml | 14 ++++----- yazi-codegen/Cargo.toml | 2 +- yazi-config/Cargo.toml | 12 ++++---- yazi-core/Cargo.toml | 28 +++++++++--------- yazi-dds/Cargo.toml | 12 ++++---- yazi-ffi/Cargo.toml | 4 +-- yazi-fm/Cargo.toml | 30 +++++++++---------- yazi-fs/Cargo.toml | 8 ++--- yazi-macro/Cargo.toml | 2 +- yazi-plugin/Cargo.toml | 22 +++++++------- yazi-plugin/preset/components/current.lua | 11 +++---- yazi-plugin/preset/components/parent.lua | 6 ++-- yazi-plugin/preset/plugins/folder.lua | 6 ++-- yazi-plugin/preset/plugins/magick.lua | 4 +-- yazi-plugin/preset/plugins/svg.lua | 2 +- yazi-plugin/preset/plugins/video.lua | 10 +++---- yazi-plugin/src/elements/line.rs | 27 ++++++++++++++++- yazi-proxy/Cargo.toml | 8 ++--- yazi-scheduler/Cargo.toml | 16 +++++----- yazi-shared/Cargo.toml | 4 +-- yazi-term/Cargo.toml | 6 ++-- yazi-widgets/Cargo.toml | 12 ++++---- 26 files changed, 170 insertions(+), 144 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fe258139..d316a015 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3292,7 +3292,7 @@ dependencies = [ [[package]] name = "yazi-adapter" -version = "25.4.8" +version = "25.5.14" dependencies = [ "ansi-to-tui", "anyhow", @@ -3313,7 +3313,7 @@ dependencies = [ [[package]] name = "yazi-binding" -version = "25.4.8" +version = "25.5.14" dependencies = [ "mlua", "paste", @@ -3325,7 +3325,7 @@ dependencies = [ [[package]] name = "yazi-boot" -version = "25.4.8" +version = "25.5.14" dependencies = [ "clap", "clap_complete", @@ -3343,7 +3343,7 @@ dependencies = [ [[package]] name = "yazi-cli" -version = "25.4.8" +version = "25.5.14" dependencies = [ "anyhow", "clap", @@ -3366,7 +3366,7 @@ dependencies = [ [[package]] name = "yazi-codegen" -version = "25.4.8" +version = "25.5.14" dependencies = [ "quote", "syn", @@ -3374,7 +3374,7 @@ dependencies = [ [[package]] name = "yazi-config" -version = "25.4.8" +version = "25.5.14" dependencies = [ "anyhow", "bitflags 2.9.0", @@ -3396,7 +3396,7 @@ dependencies = [ [[package]] name = "yazi-core" -version = "25.4.8" +version = "25.5.14" dependencies = [ "anyhow", "bitflags 2.9.0", @@ -3432,7 +3432,7 @@ dependencies = [ [[package]] name = "yazi-dds" -version = "25.4.8" +version = "25.5.14" dependencies = [ "anyhow", "mlua", @@ -3454,7 +3454,7 @@ dependencies = [ [[package]] name = "yazi-ffi" -version = "25.4.8" +version = "25.5.14" dependencies = [ "anyhow", "core-foundation-sys", @@ -3465,7 +3465,7 @@ dependencies = [ [[package]] name = "yazi-fm" -version = "25.4.8" +version = "25.5.14" dependencies = [ "anyhow", "better-panic", @@ -3505,7 +3505,7 @@ dependencies = [ [[package]] name = "yazi-fs" -version = "25.4.8" +version = "25.5.14" dependencies = [ "anyhow", "arc-swap", @@ -3531,11 +3531,11 @@ dependencies = [ [[package]] name = "yazi-macro" -version = "25.4.8" +version = "25.5.14" [[package]] name = "yazi-plugin" -version = "25.4.8" +version = "25.5.14" dependencies = [ "ansi-to-tui", "anyhow", @@ -3580,7 +3580,7 @@ checksum = "33232d9116df6415ddfcdf72701b1b7439ce87f240a14723e8dd5d17e7ed5f98" [[package]] name = "yazi-proxy" -version = "25.4.8" +version = "25.5.14" dependencies = [ "anyhow", "mlua", @@ -3593,7 +3593,7 @@ dependencies = [ [[package]] name = "yazi-scheduler" -version = "25.4.8" +version = "25.5.14" dependencies = [ "anyhow", "async-priority-channel", @@ -3616,7 +3616,7 @@ dependencies = [ [[package]] name = "yazi-shared" -version = "25.4.8" +version = "25.5.14" dependencies = [ "anyhow", "crossterm 0.29.0", @@ -3636,7 +3636,7 @@ dependencies = [ [[package]] name = "yazi-term" -version = "25.4.8" +version = "25.5.14" dependencies = [ "crossterm 0.29.0", "libc", @@ -3649,7 +3649,7 @@ dependencies = [ [[package]] name = "yazi-widgets" -version = "25.4.8" +version = "25.5.14" dependencies = [ "crossterm 0.29.0", "futures", diff --git a/yazi-adapter/Cargo.toml b/yazi-adapter/Cargo.toml index 007f0a07..2f9e2078 100644 --- a/yazi-adapter/Cargo.toml +++ b/yazi-adapter/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-adapter" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -9,10 +9,10 @@ homepage = "https://yazi-rs.github.io" repository = "https://github.com/sxyazi/yazi" [dependencies] -yazi-config = { path = "../yazi-config", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } -yazi-term = { path = "../yazi-term", version = "25.4.8" } +yazi-config = { path = "../yazi-config", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } +yazi-term = { path = "../yazi-term", version = "25.5.14" } # External dependencies ansi-to-tui = { workspace = true } diff --git a/yazi-binding/Cargo.toml b/yazi-binding/Cargo.toml index e0873f6c..33271aa0 100644 --- a/yazi-binding/Cargo.toml +++ b/yazi-binding/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-binding" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -9,9 +9,9 @@ homepage = "https://yazi-rs.github.io" repository = "https://github.com/sxyazi/yazi" [dependencies] -yazi-fs = { path = "../yazi-fs", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-fs = { path = "../yazi-fs", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # External dependencies mlua = { workspace = true } diff --git a/yazi-boot/Cargo.toml b/yazi-boot/Cargo.toml index 874f9582..920a8115 100644 --- a/yazi-boot/Cargo.toml +++ b/yazi-boot/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-boot" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -9,11 +9,11 @@ homepage = "https://yazi-rs.github.io" repository = "https://github.com/sxyazi/yazi" [dependencies] -yazi-adapter = { path = "../yazi-adapter", version = "25.4.8" } -yazi-config = { path = "../yazi-config", version = "25.4.8" } -yazi-fs = { path = "../yazi-fs", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-adapter = { path = "../yazi-adapter", version = "25.5.14" } +yazi-config = { path = "../yazi-config", version = "25.5.14" } +yazi-fs = { path = "../yazi-fs", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # External dependencies clap = { workspace = true } @@ -21,7 +21,7 @@ regex = { workspace = true } serde = { workspace = true } [build-dependencies] -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # External dependencies clap = { workspace = true } diff --git a/yazi-cli/Cargo.toml b/yazi-cli/Cargo.toml index e061af47..80627f72 100644 --- a/yazi-cli/Cargo.toml +++ b/yazi-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-cli" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -9,11 +9,11 @@ homepage = "https://yazi-rs.github.io" repository = "https://github.com/sxyazi/yazi" [dependencies] -yazi-boot = { path = "../yazi-boot", version = "25.4.8" } -yazi-dds = { path = "../yazi-dds", version = "25.4.8" } -yazi-fs = { path = "../yazi-fs", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-boot = { path = "../yazi-boot", version = "25.5.14" } +yazi-dds = { path = "../yazi-dds", version = "25.5.14" } +yazi-fs = { path = "../yazi-fs", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # External dependencies anyhow = { workspace = true } @@ -26,7 +26,7 @@ toml = { workspace = true } twox-hash = { workspace = true } [build-dependencies] -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # External build dependencies anyhow = { workspace = true } diff --git a/yazi-codegen/Cargo.toml b/yazi-codegen/Cargo.toml index 6710015e..eeb09311 100644 --- a/yazi-codegen/Cargo.toml +++ b/yazi-codegen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-codegen" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] diff --git a/yazi-config/Cargo.toml b/yazi-config/Cargo.toml index 79a898e2..682b37d3 100644 --- a/yazi-config/Cargo.toml +++ b/yazi-config/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-config" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -9,11 +9,11 @@ homepage = "https://yazi-rs.github.io" repository = "https://github.com/sxyazi/yazi" [dependencies] -yazi-codegen = { path = "../yazi-codegen", version = "25.4.8" } -yazi-fs = { path = "../yazi-fs", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } -yazi-term = { path = "../yazi-term", version = "25.4.8" } +yazi-codegen = { path = "../yazi-codegen", version = "25.5.14" } +yazi-fs = { path = "../yazi-fs", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } +yazi-term = { path = "../yazi-term", version = "25.5.14" } # External dependencies anyhow = { workspace = true } diff --git a/yazi-core/Cargo.toml b/yazi-core/Cargo.toml index 52cd981f..963ce2e4 100644 --- a/yazi-core/Cargo.toml +++ b/yazi-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-core" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -9,19 +9,19 @@ homepage = "https://yazi-rs.github.io" repository = "https://github.com/sxyazi/yazi" [dependencies] -yazi-adapter = { path = "../yazi-adapter", version = "25.4.8" } -yazi-boot = { path = "../yazi-boot", version = "25.4.8" } -yazi-codegen = { path = "../yazi-codegen", version = "25.4.8" } -yazi-config = { path = "../yazi-config", version = "25.4.8" } -yazi-dds = { path = "../yazi-dds", version = "25.4.8" } -yazi-fs = { path = "../yazi-fs", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-plugin = { path = "../yazi-plugin", version = "25.4.8" } -yazi-proxy = { path = "../yazi-proxy", version = "25.4.8" } -yazi-scheduler = { path = "../yazi-scheduler", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } -yazi-term = { path = "../yazi-term", version = "25.4.8" } -yazi-widgets = { path = "../yazi-widgets", version = "25.4.8" } +yazi-adapter = { path = "../yazi-adapter", version = "25.5.14" } +yazi-boot = { path = "../yazi-boot", version = "25.5.14" } +yazi-codegen = { path = "../yazi-codegen", version = "25.5.14" } +yazi-config = { path = "../yazi-config", version = "25.5.14" } +yazi-dds = { path = "../yazi-dds", version = "25.5.14" } +yazi-fs = { path = "../yazi-fs", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-plugin = { path = "../yazi-plugin", version = "25.5.14" } +yazi-proxy = { path = "../yazi-proxy", version = "25.5.14" } +yazi-scheduler = { path = "../yazi-scheduler", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } +yazi-term = { path = "../yazi-term", version = "25.5.14" } +yazi-widgets = { path = "../yazi-widgets", version = "25.5.14" } # External dependencies anyhow = { workspace = true } diff --git a/yazi-dds/Cargo.toml b/yazi-dds/Cargo.toml index 86b49284..d831a168 100644 --- a/yazi-dds/Cargo.toml +++ b/yazi-dds/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-dds" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -13,11 +13,11 @@ default = [ "vendored-lua" ] vendored-lua = [ "mlua/vendored" ] [dependencies] -yazi-binding = { path = "../yazi-binding", version = "25.4.8" } -yazi-boot = { path = "../yazi-boot", version = "25.4.8" } -yazi-fs = { path = "../yazi-fs", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-binding = { path = "../yazi-binding", version = "25.5.14" } +yazi-boot = { path = "../yazi-boot", version = "25.5.14" } +yazi-fs = { path = "../yazi-fs", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # External dependencies anyhow = { workspace = true } diff --git a/yazi-ffi/Cargo.toml b/yazi-ffi/Cargo.toml index c70161f4..fe92edac 100644 --- a/yazi-ffi/Cargo.toml +++ b/yazi-ffi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-ffi" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -9,7 +9,7 @@ homepage = "https://yazi-rs.github.io" repository = "https://github.com/sxyazi/yazi" [dependencies] -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } # External dependencies anyhow = { workspace = true } diff --git a/yazi-fm/Cargo.toml b/yazi-fm/Cargo.toml index fa93476f..e22e735f 100644 --- a/yazi-fm/Cargo.toml +++ b/yazi-fm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-fm" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -13,20 +13,20 @@ default = [ "vendored-lua" ] vendored-lua = [ "mlua/vendored" ] [dependencies] -yazi-adapter = { path = "../yazi-adapter", version = "25.4.8" } -yazi-binding = { path = "../yazi-binding", version = "25.4.8" } -yazi-boot = { path = "../yazi-boot", version = "25.4.8" } -yazi-codegen = { path = "../yazi-codegen", version = "25.4.8" } -yazi-config = { path = "../yazi-config", version = "25.4.8" } -yazi-core = { path = "../yazi-core", version = "25.4.8" } -yazi-dds = { path = "../yazi-dds", version = "25.4.8" } -yazi-fs = { path = "../yazi-fs", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-plugin = { path = "../yazi-plugin", version = "25.4.8" } -yazi-proxy = { path = "../yazi-proxy", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } -yazi-term = { path = "../yazi-term", version = "25.4.8" } -yazi-widgets = { path = "../yazi-widgets", version = "25.4.8" } +yazi-adapter = { path = "../yazi-adapter", version = "25.5.14" } +yazi-binding = { path = "../yazi-binding", version = "25.5.14" } +yazi-boot = { path = "../yazi-boot", version = "25.5.14" } +yazi-codegen = { path = "../yazi-codegen", version = "25.5.14" } +yazi-config = { path = "../yazi-config", version = "25.5.14" } +yazi-core = { path = "../yazi-core", version = "25.5.14" } +yazi-dds = { path = "../yazi-dds", version = "25.5.14" } +yazi-fs = { path = "../yazi-fs", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-plugin = { path = "../yazi-plugin", version = "25.5.14" } +yazi-proxy = { path = "../yazi-proxy", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } +yazi-term = { path = "../yazi-term", version = "25.5.14" } +yazi-widgets = { path = "../yazi-widgets", version = "25.5.14" } # External dependencies anyhow = { workspace = true } diff --git a/yazi-fs/Cargo.toml b/yazi-fs/Cargo.toml index e2e5c4ba..dc8059f6 100644 --- a/yazi-fs/Cargo.toml +++ b/yazi-fs/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-fs" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -9,9 +9,9 @@ homepage = "https://yazi-rs.github.io" repository = "https://github.com/sxyazi/yazi" [dependencies] -yazi-ffi = { path = "../yazi-ffi", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-ffi = { path = "../yazi-ffi", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # External dependencies anyhow = { workspace = true } diff --git a/yazi-macro/Cargo.toml b/yazi-macro/Cargo.toml index adde3f0a..88836689 100644 --- a/yazi-macro/Cargo.toml +++ b/yazi-macro/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-macro" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] diff --git a/yazi-plugin/Cargo.toml b/yazi-plugin/Cargo.toml index 188e341e..b7077875 100644 --- a/yazi-plugin/Cargo.toml +++ b/yazi-plugin/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-plugin" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -13,16 +13,16 @@ default = [ "vendored-lua" ] vendored-lua = [ "mlua/vendored" ] [dependencies] -yazi-adapter = { path = "../yazi-adapter", version = "25.4.8" } -yazi-binding = { path = "../yazi-binding", version = "25.4.8" } -yazi-boot = { path = "../yazi-boot", version = "25.4.8" } -yazi-config = { path = "../yazi-config", version = "25.4.8" } -yazi-dds = { path = "../yazi-dds", version = "25.4.8" } -yazi-fs = { path = "../yazi-fs", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-proxy = { path = "../yazi-proxy", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } -yazi-term = { path = "../yazi-term", version = "25.4.8" } +yazi-adapter = { path = "../yazi-adapter", version = "25.5.14" } +yazi-binding = { path = "../yazi-binding", version = "25.5.14" } +yazi-boot = { path = "../yazi-boot", version = "25.5.14" } +yazi-config = { path = "../yazi-config", version = "25.5.14" } +yazi-dds = { path = "../yazi-dds", version = "25.5.14" } +yazi-fs = { path = "../yazi-fs", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-proxy = { path = "../yazi-proxy", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } +yazi-term = { path = "../yazi-term", version = "25.5.14" } # External dependencies ansi-to-tui = { workspace = true } diff --git a/yazi-plugin/preset/components/current.lua b/yazi-plugin/preset/components/current.lua index 33586037..dfa04be2 100644 --- a/yazi-plugin/preset/components/current.lua +++ b/yazi-plugin/preset/components/current.lua @@ -32,15 +32,16 @@ function Current:redraw() return self:empty() end - local entities, linemodes = {}, {} + local left, right = {}, {} for _, f in ipairs(files) do - entities[#entities + 1] = Entity:new(f):redraw() - linemodes[#linemodes + 1] = Linemode:new(f):redraw() + left[#left + 1] = Entity:new(f):redraw() + right[#right + 1] = Linemode:new(f):redraw() + left[#left]:truncate { max = math.max(0, self._area.w - right[#right]:width()) } end return { - ui.List(entities):area(self._area), - ui.Text(linemodes):area(self._area):align(ui.Text.RIGHT), + ui.List(left):area(self._area), + ui.Text(right):area(self._area):align(ui.Text.RIGHT), } end diff --git a/yazi-plugin/preset/components/parent.lua b/yazi-plugin/preset/components/parent.lua index 6b04313b..a01f48f4 100644 --- a/yazi-plugin/preset/components/parent.lua +++ b/yazi-plugin/preset/components/parent.lua @@ -17,13 +17,13 @@ function Parent:redraw() return {} end - local entities = {} + local items = {} for _, f in ipairs(self._folder.window) do - entities[#entities + 1] = Entity:new(f):redraw() + items[#items + 1] = Entity:new(f):redraw():truncate { max = self._area.w } end return { - ui.List(entities):area(self._area), + ui.List(items):area(self._area), } end diff --git a/yazi-plugin/preset/plugins/folder.lua b/yazi-plugin/preset/plugins/folder.lua index a8f06e70..547a6024 100644 --- a/yazi-plugin/preset/plugins/folder.lua +++ b/yazi-plugin/preset/plugins/folder.lua @@ -19,13 +19,13 @@ function M:peek(job) return ya.preview_widget(job, ui.Line(s):area(job.area):align(ui.Line.CENTER)) end - local entities = {} + local items = {} for _, f in ipairs(folder.window) do - entities[#entities + 1] = Entity:new(f):redraw() + items[#items + 1] = Entity:new(f):redraw():truncate { max = job.area.w } end ya.preview_widget(job, { - ui.List(entities):area(job.area), + ui.List(items):area(job.area), table.unpack(Marker:new(job.area, folder):redraw()), }) end diff --git a/yazi-plugin/preset/plugins/magick.lua b/yazi-plugin/preset/plugins/magick.lua index 1844989a..28328739 100644 --- a/yazi-plugin/preset/plugins/magick.lua +++ b/yazi-plugin/preset/plugins/magick.lua @@ -31,7 +31,7 @@ function M:preload(job) end -- stylua: ignore - local status, err = cmd:args { + local status, err = cmd:arg { tostring(job.file.url), "-auto-orient", "-strip", "-sample", string.format("%dx%d>", rt.preview.max_width, rt.preview.max_height), "-quality", rt.preview.image_quality, @@ -48,7 +48,7 @@ end function M:spot(job) require("file"):spot(job) end function M.with_limit() - local cmd = Command("magick"):args { "-limit", "thread", 1 } + local cmd = Command("magick"):arg { "-limit", "thread", 1 } if rt.tasks.image_alloc > 0 then cmd:arg { "-limit", "memory", rt.tasks.image_alloc, "-limit", "disk", "1MiB" } end diff --git a/yazi-plugin/preset/plugins/svg.lua b/yazi-plugin/preset/plugins/svg.lua index 7da20a2f..415445b0 100644 --- a/yazi-plugin/preset/plugins/svg.lua +++ b/yazi-plugin/preset/plugins/svg.lua @@ -26,7 +26,7 @@ function M:preload(job) end -- stylua: ignore - local cmd = Command("resvg"):args { + local cmd = Command("resvg"):arg { "-w", rt.preview.max_width, "-h", rt.preview.max_height, "--image-rendering", "optimizeSpeed", tostring(job.file.url), tostring(cache) diff --git a/yazi-plugin/preset/plugins/video.lua b/yazi-plugin/preset/plugins/video.lua index 3a0b7057..c5385758 100644 --- a/yazi-plugin/preset/plugins/video.lua +++ b/yazi-plugin/preset/plugins/video.lua @@ -60,11 +60,11 @@ function M:preload(job) }) if percent ~= 0 then - cmd:args { "-ss", math.floor(meta.format.duration * percent / 100) } + cmd:arg { "-ss", math.floor(meta.format.duration * percent / 100) } end - cmd:args { "-i", tostring(job.file.url) } + cmd:arg { "-i", tostring(job.file.url) } if percent == 0 then - cmd:args { "-map", "disp:attached_pic" } + cmd:arg { "-map", "disp:attached_pic" } end -- stylua: ignore @@ -126,9 +126,9 @@ function M:spot_base(job) end function M.list_meta(url, entries) - local cmd = Command("ffprobe"):args { "-v", "quiet" } + local cmd = Command("ffprobe"):arg { "-v", "quiet" } if not entries:find("attached_pic", 1, true) then - cmd = cmd:args { "-select_streams", "v" } + cmd:arg { "-select_streams", "v" } end local output, err = cmd:arg({ "-show_entries", entries, "-of", "json=c=1", tostring(url) }):output() diff --git a/yazi-plugin/src/elements/line.rs b/yazi-plugin/src/elements/line.rs index 7e7e3601..b2fc9392 100644 --- a/yazi-plugin/src/elements/line.rs +++ b/yazi-plugin/src/elements/line.rs @@ -1,4 +1,4 @@ -use std::mem; +use std::{borrow::Cow, mem}; use ansi_to_tui::IntoText; use mlua::{AnyUserData, ExternalError, ExternalResult, IntoLua, Lua, MetaMethod, Table, UserData, UserDataMethods, Value}; @@ -131,5 +131,30 @@ impl UserData for Line { methods.add_method("visible", |_, me, ()| { Ok(me.inner.iter().flat_map(|s| s.content.chars()).any(|c| c.width().unwrap_or(0) > 0)) }); + methods.add_function_mut("truncate", |_, (ud, t): (AnyUserData, Table)| { + let mut me = ud.borrow_mut::()?; + let max = t.raw_get("max")?; + + let mut width = 0; + 'outer: for (x, span) in me.inner.iter_mut().enumerate() { + for (y, c) in span.content.char_indices() { + width += c.width().unwrap_or(0); + if width < max { + continue; + } else if width == max && span.content[y..].chars().nth(1).is_none() { + continue; + } + + match &mut span.content { + Cow::Borrowed(s) => span.content = Cow::Borrowed(&s[..y]), + Cow::Owned(s) => s.truncate(y), + } + me.inner.spans.truncate(x + 1); + me.inner.spans.push(ratatui::text::Span::raw("…")); + break 'outer; + } + } + Ok(ud) + }); } } diff --git a/yazi-proxy/Cargo.toml b/yazi-proxy/Cargo.toml index e34410da..fc3b62d1 100644 --- a/yazi-proxy/Cargo.toml +++ b/yazi-proxy/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-proxy" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -13,9 +13,9 @@ default = [ "vendored-lua" ] vendored-lua = [ "mlua/vendored" ] [dependencies] -yazi-config = { path = "../yazi-config", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-config = { path = "../yazi-config", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # External dependencies anyhow = { workspace = true } diff --git a/yazi-scheduler/Cargo.toml b/yazi-scheduler/Cargo.toml index ae017465..3394fc91 100644 --- a/yazi-scheduler/Cargo.toml +++ b/yazi-scheduler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-scheduler" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -9,13 +9,13 @@ homepage = "https://yazi-rs.github.io" repository = "https://github.com/sxyazi/yazi" [dependencies] -yazi-config = { path = "../yazi-config", version = "25.4.8" } -yazi-dds = { path = "../yazi-dds", version = "25.4.8" } -yazi-fs = { path = "../yazi-fs", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-plugin = { path = "../yazi-plugin", version = "25.4.8" } -yazi-proxy = { path = "../yazi-proxy", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-config = { path = "../yazi-config", version = "25.5.14" } +yazi-dds = { path = "../yazi-dds", version = "25.5.14" } +yazi-fs = { path = "../yazi-fs", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-plugin = { path = "../yazi-plugin", version = "25.5.14" } +yazi-proxy = { path = "../yazi-proxy", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # External dependencies anyhow = { workspace = true } diff --git a/yazi-shared/Cargo.toml b/yazi-shared/Cargo.toml index 18d9aa24..d28eee15 100644 --- a/yazi-shared/Cargo.toml +++ b/yazi-shared/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-shared" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -10,7 +10,7 @@ repository = "https://github.com/sxyazi/yazi" rust-version = "1.85.0" [dependencies] -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } # External dependencies anyhow = { workspace = true } diff --git a/yazi-term/Cargo.toml b/yazi-term/Cargo.toml index b3efd7cb..43205d2b 100644 --- a/yazi-term/Cargo.toml +++ b/yazi-term/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-term" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -10,8 +10,8 @@ repository = "https://github.com/sxyazi/yazi" rust-version = "1.85.0" [dependencies] -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # Logging tracing = { workspace = true } diff --git a/yazi-widgets/Cargo.toml b/yazi-widgets/Cargo.toml index 8e04168c..a0340688 100644 --- a/yazi-widgets/Cargo.toml +++ b/yazi-widgets/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "yazi-widgets" -version = "25.4.8" +version = "25.5.14" edition = "2024" license = "MIT" authors = [ "sxyazi " ] @@ -9,11 +9,11 @@ homepage = "https://yazi-rs.github.io" repository = "https://github.com/sxyazi/yazi" [dependencies] -yazi-codegen = { path = "../yazi-codegen", version = "25.4.8" } -yazi-config = { path = "../yazi-config", version = "25.4.8" } -yazi-macro = { path = "../yazi-macro", version = "25.4.8" } -yazi-plugin = { path = "../yazi-plugin", version = "25.4.8" } -yazi-shared = { path = "../yazi-shared", version = "25.4.8" } +yazi-codegen = { path = "../yazi-codegen", version = "25.5.14" } +yazi-config = { path = "../yazi-config", version = "25.5.14" } +yazi-macro = { path = "../yazi-macro", version = "25.5.14" } +yazi-plugin = { path = "../yazi-plugin", version = "25.5.14" } +yazi-shared = { path = "../yazi-shared", version = "25.5.14" } # External dependencies crossterm = { workspace = true }