feat: truncate long items in the file list (#2754)

This commit is contained in:
三咲雅 · Misaki Masa 2025-05-14 01:44:58 +08:00 committed by sxyazi
parent cea2628a19
commit 5a4e6e4068
No known key found for this signature in database
26 changed files with 170 additions and 144 deletions

36
Cargo.lock generated
View file

@ -3292,7 +3292,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-adapter" name = "yazi-adapter"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"ansi-to-tui", "ansi-to-tui",
"anyhow", "anyhow",
@ -3313,7 +3313,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-binding" name = "yazi-binding"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"mlua", "mlua",
"paste", "paste",
@ -3325,7 +3325,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-boot" name = "yazi-boot"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"clap", "clap",
"clap_complete", "clap_complete",
@ -3343,7 +3343,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-cli" name = "yazi-cli"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"clap", "clap",
@ -3366,7 +3366,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-codegen" name = "yazi-codegen"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"quote", "quote",
"syn", "syn",
@ -3374,7 +3374,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-config" name = "yazi-config"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bitflags 2.9.0", "bitflags 2.9.0",
@ -3396,7 +3396,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-core" name = "yazi-core"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"bitflags 2.9.0", "bitflags 2.9.0",
@ -3432,7 +3432,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-dds" name = "yazi-dds"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"mlua", "mlua",
@ -3454,7 +3454,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-ffi" name = "yazi-ffi"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"core-foundation-sys", "core-foundation-sys",
@ -3465,7 +3465,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-fm" name = "yazi-fm"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"better-panic", "better-panic",
@ -3505,7 +3505,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-fs" name = "yazi-fs"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"arc-swap", "arc-swap",
@ -3531,11 +3531,11 @@ dependencies = [
[[package]] [[package]]
name = "yazi-macro" name = "yazi-macro"
version = "25.4.8" version = "25.5.14"
[[package]] [[package]]
name = "yazi-plugin" name = "yazi-plugin"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"ansi-to-tui", "ansi-to-tui",
"anyhow", "anyhow",
@ -3580,7 +3580,7 @@ checksum = "33232d9116df6415ddfcdf72701b1b7439ce87f240a14723e8dd5d17e7ed5f98"
[[package]] [[package]]
name = "yazi-proxy" name = "yazi-proxy"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"mlua", "mlua",
@ -3593,7 +3593,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-scheduler" name = "yazi-scheduler"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-priority-channel", "async-priority-channel",
@ -3616,7 +3616,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-shared" name = "yazi-shared"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"crossterm 0.29.0", "crossterm 0.29.0",
@ -3636,7 +3636,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-term" name = "yazi-term"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"crossterm 0.29.0", "crossterm 0.29.0",
"libc", "libc",
@ -3649,7 +3649,7 @@ dependencies = [
[[package]] [[package]]
name = "yazi-widgets" name = "yazi-widgets"
version = "25.4.8" version = "25.5.14"
dependencies = [ dependencies = [
"crossterm 0.29.0", "crossterm 0.29.0",
"futures", "futures",

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-adapter" name = "yazi-adapter"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
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-config = { path = "../yazi-config", version = "25.4.8" } yazi-config = { path = "../yazi-config", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
yazi-term = { path = "../yazi-term", version = "25.4.8" } yazi-term = { path = "../yazi-term", version = "25.5.14" }
# External dependencies # External dependencies
ansi-to-tui = { workspace = true } ansi-to-tui = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-binding" name = "yazi-binding"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
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-fs = { path = "../yazi-fs", version = "25.4.8" } yazi-fs = { path = "../yazi-fs", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# External dependencies # External dependencies
mlua = { workspace = true } mlua = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-boot" name = "yazi-boot"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
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-adapter = { path = "../yazi-adapter", version = "25.4.8" } yazi-adapter = { path = "../yazi-adapter", version = "25.5.14" }
yazi-config = { path = "../yazi-config", version = "25.4.8" } yazi-config = { path = "../yazi-config", version = "25.5.14" }
yazi-fs = { path = "../yazi-fs", version = "25.4.8" } yazi-fs = { path = "../yazi-fs", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# External dependencies # External dependencies
clap = { workspace = true } clap = { workspace = true }
@ -21,7 +21,7 @@ regex = { workspace = true }
serde = { workspace = true } serde = { workspace = true }
[build-dependencies] [build-dependencies]
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# External dependencies # External dependencies
clap = { workspace = true } clap = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-cli" name = "yazi-cli"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
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-boot = { path = "../yazi-boot", version = "25.4.8" } yazi-boot = { path = "../yazi-boot", version = "25.5.14" }
yazi-dds = { path = "../yazi-dds", version = "25.4.8" } yazi-dds = { path = "../yazi-dds", version = "25.5.14" }
yazi-fs = { path = "../yazi-fs", version = "25.4.8" } yazi-fs = { path = "../yazi-fs", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# External dependencies # External dependencies
anyhow = { workspace = true } anyhow = { workspace = true }
@ -26,7 +26,7 @@ toml = { workspace = true }
twox-hash = { workspace = true } twox-hash = { workspace = true }
[build-dependencies] [build-dependencies]
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# External build dependencies # External build dependencies
anyhow = { workspace = true } anyhow = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-codegen" name = "yazi-codegen"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-config" name = "yazi-config"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
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-codegen = { path = "../yazi-codegen", version = "25.4.8" } yazi-codegen = { path = "../yazi-codegen", version = "25.5.14" }
yazi-fs = { path = "../yazi-fs", version = "25.4.8" } yazi-fs = { path = "../yazi-fs", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
yazi-term = { path = "../yazi-term", version = "25.4.8" } yazi-term = { path = "../yazi-term", version = "25.5.14" }
# External dependencies # External dependencies
anyhow = { workspace = true } anyhow = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-core" name = "yazi-core"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -9,19 +9,19 @@ homepage = "https://yazi-rs.github.io"
repository = "https://github.com/sxyazi/yazi" repository = "https://github.com/sxyazi/yazi"
[dependencies] [dependencies]
yazi-adapter = { path = "../yazi-adapter", version = "25.4.8" } yazi-adapter = { path = "../yazi-adapter", version = "25.5.14" }
yazi-boot = { path = "../yazi-boot", version = "25.4.8" } yazi-boot = { path = "../yazi-boot", version = "25.5.14" }
yazi-codegen = { path = "../yazi-codegen", version = "25.4.8" } yazi-codegen = { path = "../yazi-codegen", version = "25.5.14" }
yazi-config = { path = "../yazi-config", version = "25.4.8" } yazi-config = { path = "../yazi-config", version = "25.5.14" }
yazi-dds = { path = "../yazi-dds", version = "25.4.8" } yazi-dds = { path = "../yazi-dds", version = "25.5.14" }
yazi-fs = { path = "../yazi-fs", version = "25.4.8" } yazi-fs = { path = "../yazi-fs", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-plugin = { path = "../yazi-plugin", version = "25.4.8" } yazi-plugin = { path = "../yazi-plugin", version = "25.5.14" }
yazi-proxy = { path = "../yazi-proxy", version = "25.4.8" } yazi-proxy = { path = "../yazi-proxy", version = "25.5.14" }
yazi-scheduler = { path = "../yazi-scheduler", version = "25.4.8" } yazi-scheduler = { path = "../yazi-scheduler", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
yazi-term = { path = "../yazi-term", version = "25.4.8" } yazi-term = { path = "../yazi-term", version = "25.5.14" }
yazi-widgets = { path = "../yazi-widgets", version = "25.4.8" } yazi-widgets = { path = "../yazi-widgets", version = "25.5.14" }
# External dependencies # External dependencies
anyhow = { workspace = true } anyhow = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-dds" name = "yazi-dds"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -13,11 +13,11 @@ default = [ "vendored-lua" ]
vendored-lua = [ "mlua/vendored" ] vendored-lua = [ "mlua/vendored" ]
[dependencies] [dependencies]
yazi-binding = { path = "../yazi-binding", version = "25.4.8" } yazi-binding = { path = "../yazi-binding", version = "25.5.14" }
yazi-boot = { path = "../yazi-boot", version = "25.4.8" } yazi-boot = { path = "../yazi-boot", version = "25.5.14" }
yazi-fs = { path = "../yazi-fs", version = "25.4.8" } yazi-fs = { path = "../yazi-fs", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# External dependencies # External dependencies
anyhow = { workspace = true } anyhow = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-ffi" name = "yazi-ffi"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
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-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
# External dependencies # External dependencies
anyhow = { workspace = true } anyhow = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-fm" name = "yazi-fm"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -13,20 +13,20 @@ default = [ "vendored-lua" ]
vendored-lua = [ "mlua/vendored" ] vendored-lua = [ "mlua/vendored" ]
[dependencies] [dependencies]
yazi-adapter = { path = "../yazi-adapter", version = "25.4.8" } yazi-adapter = { path = "../yazi-adapter", version = "25.5.14" }
yazi-binding = { path = "../yazi-binding", version = "25.4.8" } yazi-binding = { path = "../yazi-binding", version = "25.5.14" }
yazi-boot = { path = "../yazi-boot", version = "25.4.8" } yazi-boot = { path = "../yazi-boot", version = "25.5.14" }
yazi-codegen = { path = "../yazi-codegen", version = "25.4.8" } yazi-codegen = { path = "../yazi-codegen", version = "25.5.14" }
yazi-config = { path = "../yazi-config", version = "25.4.8" } yazi-config = { path = "../yazi-config", version = "25.5.14" }
yazi-core = { path = "../yazi-core", version = "25.4.8" } yazi-core = { path = "../yazi-core", version = "25.5.14" }
yazi-dds = { path = "../yazi-dds", version = "25.4.8" } yazi-dds = { path = "../yazi-dds", version = "25.5.14" }
yazi-fs = { path = "../yazi-fs", version = "25.4.8" } yazi-fs = { path = "../yazi-fs", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-plugin = { path = "../yazi-plugin", version = "25.4.8" } yazi-plugin = { path = "../yazi-plugin", version = "25.5.14" }
yazi-proxy = { path = "../yazi-proxy", version = "25.4.8" } yazi-proxy = { path = "../yazi-proxy", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
yazi-term = { path = "../yazi-term", version = "25.4.8" } yazi-term = { path = "../yazi-term", version = "25.5.14" }
yazi-widgets = { path = "../yazi-widgets", version = "25.4.8" } yazi-widgets = { path = "../yazi-widgets", version = "25.5.14" }
# External dependencies # External dependencies
anyhow = { workspace = true } anyhow = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-fs" name = "yazi-fs"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
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-ffi = { path = "../yazi-ffi", version = "25.4.8" } yazi-ffi = { path = "../yazi-ffi", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# External dependencies # External dependencies
anyhow = { workspace = true } anyhow = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-macro" name = "yazi-macro"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-plugin" name = "yazi-plugin"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -13,16 +13,16 @@ default = [ "vendored-lua" ]
vendored-lua = [ "mlua/vendored" ] vendored-lua = [ "mlua/vendored" ]
[dependencies] [dependencies]
yazi-adapter = { path = "../yazi-adapter", version = "25.4.8" } yazi-adapter = { path = "../yazi-adapter", version = "25.5.14" }
yazi-binding = { path = "../yazi-binding", version = "25.4.8" } yazi-binding = { path = "../yazi-binding", version = "25.5.14" }
yazi-boot = { path = "../yazi-boot", version = "25.4.8" } yazi-boot = { path = "../yazi-boot", version = "25.5.14" }
yazi-config = { path = "../yazi-config", version = "25.4.8" } yazi-config = { path = "../yazi-config", version = "25.5.14" }
yazi-dds = { path = "../yazi-dds", version = "25.4.8" } yazi-dds = { path = "../yazi-dds", version = "25.5.14" }
yazi-fs = { path = "../yazi-fs", version = "25.4.8" } yazi-fs = { path = "../yazi-fs", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-proxy = { path = "../yazi-proxy", version = "25.4.8" } yazi-proxy = { path = "../yazi-proxy", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
yazi-term = { path = "../yazi-term", version = "25.4.8" } yazi-term = { path = "../yazi-term", version = "25.5.14" }
# External dependencies # External dependencies
ansi-to-tui = { workspace = true } ansi-to-tui = { workspace = true }

View file

@ -32,15 +32,16 @@ function Current:redraw()
return self:empty() return self:empty()
end end
local entities, linemodes = {}, {} local left, right = {}, {}
for _, f in ipairs(files) do for _, f in ipairs(files) do
entities[#entities + 1] = Entity:new(f):redraw() left[#left + 1] = Entity:new(f):redraw()
linemodes[#linemodes + 1] = Linemode:new(f):redraw() right[#right + 1] = Linemode:new(f):redraw()
left[#left]:truncate { max = math.max(0, self._area.w - right[#right]:width()) }
end end
return { return {
ui.List(entities):area(self._area), ui.List(left):area(self._area),
ui.Text(linemodes):area(self._area):align(ui.Text.RIGHT), ui.Text(right):area(self._area):align(ui.Text.RIGHT),
} }
end end

View file

@ -17,13 +17,13 @@ function Parent:redraw()
return {} return {}
end end
local entities = {} local items = {}
for _, f in ipairs(self._folder.window) do 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 end
return { return {
ui.List(entities):area(self._area), ui.List(items):area(self._area),
} }
end end

View file

@ -19,13 +19,13 @@ function M:peek(job)
return ya.preview_widget(job, ui.Line(s):area(job.area):align(ui.Line.CENTER)) return ya.preview_widget(job, ui.Line(s):area(job.area):align(ui.Line.CENTER))
end end
local entities = {} local items = {}
for _, f in ipairs(folder.window) do 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 end
ya.preview_widget(job, { ya.preview_widget(job, {
ui.List(entities):area(job.area), ui.List(items):area(job.area),
table.unpack(Marker:new(job.area, folder):redraw()), table.unpack(Marker:new(job.area, folder):redraw()),
}) })
end end

View file

@ -31,7 +31,7 @@ function M:preload(job)
end end
-- stylua: ignore -- stylua: ignore
local status, err = cmd:args { local status, err = cmd:arg {
tostring(job.file.url), "-auto-orient", "-strip", tostring(job.file.url), "-auto-orient", "-strip",
"-sample", string.format("%dx%d>", rt.preview.max_width, rt.preview.max_height), "-sample", string.format("%dx%d>", rt.preview.max_width, rt.preview.max_height),
"-quality", rt.preview.image_quality, "-quality", rt.preview.image_quality,
@ -48,7 +48,7 @@ end
function M:spot(job) require("file"):spot(job) end function M:spot(job) require("file"):spot(job) end
function M.with_limit() 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 if rt.tasks.image_alloc > 0 then
cmd:arg { "-limit", "memory", rt.tasks.image_alloc, "-limit", "disk", "1MiB" } cmd:arg { "-limit", "memory", rt.tasks.image_alloc, "-limit", "disk", "1MiB" }
end end

View file

@ -26,7 +26,7 @@ function M:preload(job)
end end
-- stylua: ignore -- stylua: ignore
local cmd = Command("resvg"):args { local cmd = Command("resvg"):arg {
"-w", rt.preview.max_width, "-h", rt.preview.max_height, "-w", rt.preview.max_width, "-h", rt.preview.max_height,
"--image-rendering", "optimizeSpeed", "--image-rendering", "optimizeSpeed",
tostring(job.file.url), tostring(cache) tostring(job.file.url), tostring(cache)

View file

@ -60,11 +60,11 @@ function M:preload(job)
}) })
if percent ~= 0 then 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 end
cmd:args { "-i", tostring(job.file.url) } cmd:arg { "-i", tostring(job.file.url) }
if percent == 0 then if percent == 0 then
cmd:args { "-map", "disp:attached_pic" } cmd:arg { "-map", "disp:attached_pic" }
end end
-- stylua: ignore -- stylua: ignore
@ -126,9 +126,9 @@ function M:spot_base(job)
end end
function M.list_meta(url, entries) 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 if not entries:find("attached_pic", 1, true) then
cmd = cmd:args { "-select_streams", "v" } cmd:arg { "-select_streams", "v" }
end end
local output, err = cmd:arg({ "-show_entries", entries, "-of", "json=c=1", tostring(url) }):output() local output, err = cmd:arg({ "-show_entries", entries, "-of", "json=c=1", tostring(url) }):output()

View file

@ -1,4 +1,4 @@
use std::mem; use std::{borrow::Cow, mem};
use ansi_to_tui::IntoText; use ansi_to_tui::IntoText;
use mlua::{AnyUserData, ExternalError, ExternalResult, IntoLua, Lua, MetaMethod, Table, UserData, UserDataMethods, Value}; 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, ()| { methods.add_method("visible", |_, me, ()| {
Ok(me.inner.iter().flat_map(|s| s.content.chars()).any(|c| c.width().unwrap_or(0) > 0)) 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::<Self>()?;
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)
});
} }
} }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-proxy" name = "yazi-proxy"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -13,9 +13,9 @@ default = [ "vendored-lua" ]
vendored-lua = [ "mlua/vendored" ] vendored-lua = [ "mlua/vendored" ]
[dependencies] [dependencies]
yazi-config = { path = "../yazi-config", version = "25.4.8" } yazi-config = { path = "../yazi-config", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# External dependencies # External dependencies
anyhow = { workspace = true } anyhow = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-scheduler" name = "yazi-scheduler"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -9,13 +9,13 @@ 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 = "25.4.8" } yazi-config = { path = "../yazi-config", version = "25.5.14" }
yazi-dds = { path = "../yazi-dds", version = "25.4.8" } yazi-dds = { path = "../yazi-dds", version = "25.5.14" }
yazi-fs = { path = "../yazi-fs", version = "25.4.8" } yazi-fs = { path = "../yazi-fs", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-plugin = { path = "../yazi-plugin", version = "25.4.8" } yazi-plugin = { path = "../yazi-plugin", version = "25.5.14" }
yazi-proxy = { path = "../yazi-proxy", version = "25.4.8" } yazi-proxy = { path = "../yazi-proxy", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# External dependencies # External dependencies
anyhow = { workspace = true } anyhow = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-shared" name = "yazi-shared"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -10,7 +10,7 @@ repository = "https://github.com/sxyazi/yazi"
rust-version = "1.85.0" rust-version = "1.85.0"
[dependencies] [dependencies]
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
# External dependencies # External dependencies
anyhow = { workspace = true } anyhow = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-term" name = "yazi-term"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
license = "MIT" license = "MIT"
authors = [ "sxyazi <sxyazi@gmail.com>" ] authors = [ "sxyazi <sxyazi@gmail.com>" ]
@ -10,8 +10,8 @@ repository = "https://github.com/sxyazi/yazi"
rust-version = "1.85.0" rust-version = "1.85.0"
[dependencies] [dependencies]
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# Logging # Logging
tracing = { workspace = true } tracing = { workspace = true }

View file

@ -1,6 +1,6 @@
[package] [package]
name = "yazi-widgets" name = "yazi-widgets"
version = "25.4.8" version = "25.5.14"
edition = "2024" edition = "2024"
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-codegen = { path = "../yazi-codegen", version = "25.4.8" } yazi-codegen = { path = "../yazi-codegen", version = "25.5.14" }
yazi-config = { path = "../yazi-config", version = "25.4.8" } yazi-config = { path = "../yazi-config", version = "25.5.14" }
yazi-macro = { path = "../yazi-macro", version = "25.4.8" } yazi-macro = { path = "../yazi-macro", version = "25.5.14" }
yazi-plugin = { path = "../yazi-plugin", version = "25.4.8" } yazi-plugin = { path = "../yazi-plugin", version = "25.5.14" }
yazi-shared = { path = "../yazi-shared", version = "25.4.8" } yazi-shared = { path = "../yazi-shared", version = "25.5.14" }
# External dependencies # External dependencies
crossterm = { workspace = true } crossterm = { workspace = true }