From 15eed55a549c7f7b23bc77858d6b2329f7b2c972 Mon Sep 17 00:00:00 2001 From: sxyazi Date: Thu, 14 Sep 2023 09:43:54 +0800 Subject: [PATCH] simplify the logic --- app/src/executor.rs | 8 ++++---- config/docs/yazi.md | 10 +++++----- config/preset/keymap.toml | 20 ++++++++++---------- config/preset/yazi.toml | 14 +++++++------- config/src/manager/manager.rs | 8 ++++---- core/src/files/sorter.rs | 20 ++++++++++---------- 6 files changed, 40 insertions(+), 40 deletions(-) diff --git a/app/src/executor.rs b/app/src/executor.rs index 69612813..bbc1ffec 100644 --- a/app/src/executor.rs +++ b/app/src/executor.rs @@ -149,11 +149,11 @@ impl Executor { // Sorting "sort" => { let b = cx.manager.active_mut().set_sorter(FilesSorter { - by: SortBy::try_from(exec.args.get(0).cloned().unwrap_or_default()) + by: SortBy::try_from(exec.args.get(0).cloned().unwrap_or_default()) .unwrap_or_default(), - reverse: exec.named.contains_key("reverse"), - dir_first: exec.named.contains_key("dir_first"), - ignore_case: exec.named.contains_key("ignore_case"), + sensitive: exec.named.contains_key("sensitive"), + reverse: exec.named.contains_key("reverse"), + dir_first: exec.named.contains_key("dir_first"), }); cx.tasks.precache_size(&cx.manager.current().files); b diff --git a/config/docs/yazi.md b/config/docs/yazi.md index 02eeabb6..b7af3225 100644 --- a/config/docs/yazi.md +++ b/config/docs/yazi.md @@ -14,6 +14,11 @@ - `"natural"`: Sort naturally, e.g. `1.md` < `2.md` < `10.md` - `"size"`: Sort by file size +- sort_sensitive: Sort case-sensitively + + - `true`: Case-sensitive + - `false`: Case-insensitive + - sort_reverse: Display files in reverse order - `true`: Reverse order @@ -24,11 +29,6 @@ - `true`: Directories first - `false`: Respects `sort_by` and `sort_reverse` only -- sort_ignore_case: Ignore case while sorting - - - `true`: Ignore case - - `false`: Uppercase has precedence over lowercase - - show_hidden: Show hidden files - `true`: Show diff --git a/config/preset/keymap.toml b/config/preset/keymap.toml index ce5bba74..38f6562b 100644 --- a/config/preset/keymap.toml +++ b/config/preset/keymap.toml @@ -71,16 +71,16 @@ keymap = [ { on = [ "=" ], exec = "find_arrow --previous" }, # Sorting - { on = [ ",", "a" ], exec = "sort alphabetical --dir_first --ignore_case", desc = "Sort alphabetically, directories first" }, - { on = [ ",", "A" ], exec = "sort alphabetical --reverse --dir_first --ignore_case", desc = "Sort alphabetically, directories first (reverse)" }, - { on = [ ",", "c" ], exec = "sort created --dir_first --ignore_case", desc = "Sort by creation time, directories first" }, - { on = [ ",", "C" ], exec = "sort created --reverse --dir_first --ignore_case", desc = "Sort by creation time, directories first (reverse)" }, - { on = [ ",", "m" ], exec = "sort modified --dir_first --ignore_case", desc = "Sort by modified time, directories first" }, - { on = [ ",", "M" ], exec = "sort modified --reverse --dir_first --ignore_case", desc = "Sort by modified time, directories first (reverse)" }, - { on = [ ",", "n" ], exec = "sort natural --dir_first --ignore_case", desc = "Sort naturally, directories first" }, - { on = [ ",", "N" ], exec = "sort natural --reverse --dir_first --ignore_case", desc = "Sort naturally, directories first (reverse)" }, - { on = [ ",", "s" ], exec = "sort size --dir_first --ignore_case", desc = "Sort by size, directories first" }, - { on = [ ",", "S" ], exec = "sort size --reverse --dir_first --ignore_case", desc = "Sort by size, directories first (reverse)" }, + { on = [ ",", "a" ], exec = "sort alphabetical --dir_first", desc = "Sort alphabetically, directories first" }, + { on = [ ",", "A" ], exec = "sort alphabetical --reverse --dir_first", desc = "Sort alphabetically, directories first (reverse)" }, + { on = [ ",", "c" ], exec = "sort created --dir_first", desc = "Sort by creation time, directories first" }, + { on = [ ",", "C" ], exec = "sort created --reverse --dir_first", desc = "Sort by creation time, directories first (reverse)" }, + { on = [ ",", "m" ], exec = "sort modified --dir_first", desc = "Sort by modified time, directories first" }, + { on = [ ",", "M" ], exec = "sort modified --reverse --dir_first", desc = "Sort by modified time, directories first (reverse)" }, + { on = [ ",", "n" ], exec = "sort natural --dir_first", desc = "Sort naturally, directories first" }, + { on = [ ",", "N" ], exec = "sort natural --reverse --dir_first", desc = "Sort naturally, directories first (reverse)" }, + { on = [ ",", "s" ], exec = "sort size --dir_first", desc = "Sort by size, directories first" }, + { on = [ ",", "S" ], exec = "sort size --reverse --dir_first", desc = "Sort by size, directories first (reverse)" }, # Tabs { on = [ "t" ], exec = "tab_create --current", desc = "Create a new tab using the current path" }, diff --git a/config/preset/yazi.toml b/config/preset/yazi.toml index b795ec2f..0e23f707 100644 --- a/config/preset/yazi.toml +++ b/config/preset/yazi.toml @@ -1,11 +1,11 @@ [manager] -layout = [ 1, 4, 3 ] -sort_by = "modified" -sort_reverse = true -sort_dir_first = true -sort_ignore_case = true -show_hidden = false -show_symlink = true +layout = [ 1, 4, 3 ] +sort_by = "modified" +sort_sensitive = false +sort_reverse = true +sort_dir_first = true +show_hidden = false +show_symlink = true [preview] tab_size = 2 diff --git a/config/src/manager/manager.rs b/config/src/manager/manager.rs index 864fe2d3..f1acf380 100644 --- a/config/src/manager/manager.rs +++ b/config/src/manager/manager.rs @@ -8,10 +8,10 @@ pub struct Manager { pub layout: ManagerLayout, // Sorting - pub sort_by: SortBy, - pub sort_reverse: bool, - pub sort_dir_first: bool, - pub sort_ignore_case: bool, + pub sort_by: SortBy, + pub sort_sensitive: bool, + pub sort_reverse: bool, + pub sort_dir_first: bool, // Display pub show_hidden: bool, diff --git a/core/src/files/sorter.rs b/core/src/files/sorter.rs index 6e3e55ea..08c29bbf 100644 --- a/core/src/files/sorter.rs +++ b/core/src/files/sorter.rs @@ -7,19 +7,19 @@ use super::File; #[derive(Clone, Copy, PartialEq)] pub struct FilesSorter { - pub by: SortBy, - pub reverse: bool, - pub dir_first: bool, - pub ignore_case: bool, + pub by: SortBy, + pub sensitive: bool, + pub reverse: bool, + pub dir_first: bool, } impl Default for FilesSorter { fn default() -> Self { Self { - by: MANAGER.sort_by, - reverse: MANAGER.sort_reverse, - dir_first: MANAGER.sort_dir_first, - ignore_case: MANAGER.sort_ignore_case, + by: MANAGER.sort_by, + sensitive: MANAGER.sort_sensitive, + reverse: MANAGER.sort_reverse, + dir_first: MANAGER.sort_dir_first, } } } @@ -32,7 +32,7 @@ impl FilesSorter { match self.by { SortBy::Alphabetical => items.sort_unstable_by(|a, b| { - if self.ignore_case { + if self.sensitive { self.cmp( a.url.deref().as_os_str().to_ascii_lowercase(), b.url.deref().as_os_str().to_ascii_lowercase(), @@ -78,7 +78,7 @@ impl FilesSorter { return promote; } - let ordering = if self.ignore_case { + let ordering = if self.sensitive { natord::compare_ignore_case(&entities[a].0, &entities[b].0) } else { natord::compare(&entities[a].0, &entities[b].0)