From 2d0a0059d33d884a33df4d0b9cdc0960ef53df51 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 5 Jan 2024 09:44:47 -0700 Subject: [PATCH] Sort naturally --- Cargo.lock | 16 ++++++++++++++++ Cargo.toml | 1 + src/tab.rs | 2 +- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index d7206f6..c79d3a0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -199,6 +199,12 @@ dependencies = [ "libc", ] +[[package]] +name = "any_ascii" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70033777eb8b5124a81a1889416543dddef2de240019b674c81285a2635a7e1e" + [[package]] name = "apply" version = "0.3.0" @@ -945,6 +951,7 @@ dependencies = [ "i18n-embed", "i18n-embed-fl", "lazy_static", + "lexical-sort", "libcosmic", "log", "rust-embed", @@ -2706,6 +2713,15 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "lexical-sort" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c09e4591611e231daf4d4c685a66cb0410cc1e502027a20ae55f2bb9e997207a" +dependencies = [ + "any_ascii", +] + [[package]] name = "libc" version = "0.2.151" diff --git a/Cargo.toml b/Cargo.toml index 17e89b0..e98b402 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ edition = "2021" dirs = "5.0.1" env_logger = "0.10" lazy_static = "1" +lexical-sort = "0.3.1" log = "0.4" serde = { version = "1", features = ["serde_derive"] } tokio = { version = "1" } diff --git a/src/tab.rs b/src/tab.rs index 0ba81c0..b02c3a5 100644 --- a/src/tab.rs +++ b/src/tab.rs @@ -201,7 +201,7 @@ pub fn rescan(tab_path: PathBuf) -> Vec { items.sort_by(|a, b| match (a.is_dir, b.is_dir) { (true, false) => Ordering::Less, (false, true) => Ordering::Greater, - _ => a.name.cmp(&b.name), + _ => lexical_sort::natural_lexical_cmp(&a.name, &b.name), }); items }