mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
Simplify the code
This commit is contained in:
parent
7849712648
commit
b540d103ab
5 changed files with 30 additions and 75 deletions
|
|
@ -106,18 +106,18 @@ keymap = [
|
|||
{ on = [ "N" ], run = "find_arrow --previous", desc = "Go to previous found file" },
|
||||
|
||||
# Sorting
|
||||
{ on = [ ",", "m" ], run = "sort modified", desc = "Sort by modified time" },
|
||||
{ on = [ ",", "M" ], run = "sort modified --reverse", desc = "Sort by modified time (reverse)" },
|
||||
{ on = [ ",", "c" ], run = "sort created", desc = "Sort by created time" },
|
||||
{ on = [ ",", "C" ], run = "sort created --reverse", desc = "Sort by created time (reverse)" },
|
||||
{ on = [ ",", "e" ], run = "sort extension", desc = "Sort by extension" },
|
||||
{ on = [ ",", "E" ], run = "sort extension --reverse", desc = "Sort by extension (reverse)" },
|
||||
{ on = [ ",", "a" ], run = "sort alphabetical", desc = "Sort alphabetically" },
|
||||
{ on = [ ",", "A" ], run = "sort alphabetical --reverse", desc = "Sort alphabetically (reverse)" },
|
||||
{ on = [ ",", "n" ], run = "sort natural", desc = "Sort naturally" },
|
||||
{ on = [ ",", "N" ], run = "sort natural --reverse", desc = "Sort naturally (reverse)" },
|
||||
{ on = [ ",", "s" ], run = "sort size", desc = "Sort by size" },
|
||||
{ on = [ ",", "S" ], run = "sort size --reverse", desc = "Sort by size (reverse)" },
|
||||
{ on = [ ",", "m" ], run = "sort modified --reverse=no", desc = "Sort by modified time" },
|
||||
{ on = [ ",", "M" ], run = "sort modified --reverse", desc = "Sort by modified time (reverse)" },
|
||||
{ on = [ ",", "c" ], run = "sort created --reverse=no", desc = "Sort by created time" },
|
||||
{ on = [ ",", "C" ], run = "sort created --reverse", desc = "Sort by created time (reverse)" },
|
||||
{ on = [ ",", "e" ], run = "sort extension --reverse=no", desc = "Sort by extension" },
|
||||
{ on = [ ",", "E" ], run = "sort extension --reverse", desc = "Sort by extension (reverse)" },
|
||||
{ on = [ ",", "a" ], run = "sort alphabetical --reverse=no", desc = "Sort alphabetically" },
|
||||
{ on = [ ",", "A" ], run = "sort alphabetical --reverse", desc = "Sort alphabetically (reverse)" },
|
||||
{ on = [ ",", "n" ], run = "sort natural --reverse=no", desc = "Sort naturally" },
|
||||
{ on = [ ",", "N" ], run = "sort natural --reverse", desc = "Sort naturally (reverse)" },
|
||||
{ on = [ ",", "s" ], run = "sort size --reverse=no", desc = "Sort by size" },
|
||||
{ on = [ ",", "S" ], run = "sort size --reverse", desc = "Sort by size (reverse)" },
|
||||
|
||||
# Tabs
|
||||
{ on = [ "t" ], run = "tab_create --current", desc = "Create a new tab using the current path" },
|
||||
|
|
|
|||
|
|
@ -186,9 +186,9 @@ open_origin = "hovered"
|
|||
open_offset = [ 0, 1, 50, 7 ]
|
||||
|
||||
[which]
|
||||
sort_by = "none"
|
||||
sort_sensitive = false
|
||||
sort_reverse = false
|
||||
sort_by = "none"
|
||||
sort_sensitive = false
|
||||
sort_reverse = false
|
||||
sort_transliteration = false
|
||||
|
||||
[log]
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
use std::{fmt, mem};
|
||||
use std::{fmt, str::FromStr};
|
||||
|
||||
use anyhow::{bail, Result};
|
||||
use anyhow::Result;
|
||||
use serde::{de::{self, Visitor}, Deserializer};
|
||||
use yazi_shared::event::{Cmd, Data};
|
||||
use yazi_shared::event::Cmd;
|
||||
|
||||
pub(super) fn run_deserialize<'de, D>(deserializer: D) -> Result<Vec<Cmd>, D::Error>
|
||||
where
|
||||
|
|
@ -10,33 +10,6 @@ where
|
|||
{
|
||||
struct RunVisitor;
|
||||
|
||||
#[allow(clippy::explicit_counter_loop)]
|
||||
fn parse(s: &str) -> Result<Cmd> {
|
||||
let mut args = shell_words::split(s)?;
|
||||
let mut cmd = Cmd { name: mem::take(&mut args[0]), ..Default::default() };
|
||||
|
||||
let mut i = 0usize;
|
||||
for arg in args.into_iter().skip(1) {
|
||||
let Some(arg) = arg.strip_prefix("--") else {
|
||||
cmd.args.insert(i.to_string(), Data::String(arg));
|
||||
i += 1;
|
||||
continue;
|
||||
};
|
||||
|
||||
let mut parts = arg.splitn(2, '=');
|
||||
let Some(key) = parts.next().map(|s| s.to_owned()) else {
|
||||
bail!("invalid argument: {arg}");
|
||||
};
|
||||
|
||||
if let Some(val) = parts.next() {
|
||||
cmd.args.insert(key, Data::String(val.to_owned()));
|
||||
} else {
|
||||
cmd.args.insert(key, Data::Boolean(true));
|
||||
}
|
||||
}
|
||||
Ok(cmd)
|
||||
}
|
||||
|
||||
impl<'de> Visitor<'de> for RunVisitor {
|
||||
type Value = Vec<Cmd>;
|
||||
|
||||
|
|
@ -50,7 +23,7 @@ where
|
|||
{
|
||||
let mut cmds = vec![];
|
||||
while let Some(value) = &seq.next_element::<String>()? {
|
||||
cmds.push(parse(value).map_err(de::Error::custom)?);
|
||||
cmds.push(Cmd::from_str(value).map_err(de::Error::custom)?);
|
||||
}
|
||||
if cmds.is_empty() {
|
||||
return Err(de::Error::custom("`run` within keymap.toml cannot be empty"));
|
||||
|
|
@ -62,7 +35,7 @@ where
|
|||
where
|
||||
E: de::Error,
|
||||
{
|
||||
Ok(vec![parse(value).map_err(de::Error::custom)?])
|
||||
Ok(vec![Cmd::from_str(value).map_err(de::Error::custom)?])
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,40 +4,20 @@ use yazi_config::manager::SortBy;
|
|||
use yazi_proxy::ManagerProxy;
|
||||
use yazi_shared::event::Cmd;
|
||||
|
||||
use crate::{tab::{Config, Tab}, tasks::Tasks};
|
||||
use crate::{tab::Tab, tasks::Tasks};
|
||||
|
||||
impl Tab {
|
||||
pub fn sort(&mut self, mut c: Cmd, tasks: &Tasks) {
|
||||
let defaults = Config::default();
|
||||
let conf = &mut self.conf;
|
||||
if let Some(by) = c.take_first_str() {
|
||||
self.conf.sort_by = SortBy::from_str(&by).unwrap_or_default();
|
||||
} else {
|
||||
self.conf.sort_by = defaults.sort_by;
|
||||
conf.sort_by = SortBy::from_str(&by).unwrap_or_default();
|
||||
}
|
||||
|
||||
if let Some(rev) = c.maybe_bool("reverse") {
|
||||
self.conf.sort_reverse = rev;
|
||||
} else {
|
||||
self.conf.sort_reverse = defaults.sort_reverse;
|
||||
}
|
||||
|
||||
if let Some(d_f) = c.maybe_bool("dir-first") {
|
||||
self.conf.sort_dir_first = d_f;
|
||||
} else {
|
||||
self.conf.sort_dir_first = defaults.sort_dir_first;
|
||||
}
|
||||
|
||||
if let Some(sen) = c.maybe_bool("sensitive") {
|
||||
self.conf.sort_sensitive = sen;
|
||||
} else {
|
||||
self.conf.sort_sensitive = defaults.sort_sensitive;
|
||||
}
|
||||
|
||||
if let Some(tran) = c.maybe_bool("transliteration") {
|
||||
self.conf.sort_transliteration = tran;
|
||||
} else {
|
||||
self.conf.sort_transliteration = defaults.sort_transliteration;
|
||||
}
|
||||
conf.sort_reverse = c.maybe_bool("reverse").unwrap_or(conf.sort_reverse);
|
||||
conf.sort_dir_first = c.maybe_bool("dir-first").unwrap_or(conf.sort_dir_first);
|
||||
conf.sort_sensitive = c.maybe_bool("sensitive").unwrap_or(conf.sort_sensitive);
|
||||
conf.sort_transliteration =
|
||||
c.maybe_bool("transliteration").unwrap_or(conf.sort_transliteration);
|
||||
|
||||
self.apply_files_attrs();
|
||||
ManagerProxy::update_paged();
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ impl Data {
|
|||
pub fn as_bool(&self) -> Option<bool> {
|
||||
match self {
|
||||
Self::Boolean(b) => Some(*b),
|
||||
Self::String(s) if s == "no" => Some(false),
|
||||
Self::String(s) if s == "yes" => Some(true),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue