simplify the logic

This commit is contained in:
sxyazi 2023-09-14 09:43:54 +08:00
parent 09b4ee461a
commit 15eed55a54
No known key found for this signature in database
6 changed files with 40 additions and 40 deletions

View file

@ -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

View file

@ -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

View file

@ -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" },

View file

@ -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

View file

@ -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,

View file

@ -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)