From 1ba7c60a016cab356d178cbba987901561875ada Mon Sep 17 00:00:00 2001 From: sxyazi Date: Thu, 15 Aug 2024 21:29:03 +0800 Subject: [PATCH] Refactor --- yazi-boot/src/actions/debug.rs | 26 ++++++++++++-------- yazi-core/src/manager/commands/tab_switch.rs | 4 --- yazi-core/src/manager/tabs.rs | 4 ++- yazi-dds/src/body/body.rs | 12 ++++----- yazi-dds/src/body/tab.rs | 22 ++++++----------- yazi-dds/src/payload.rs | 2 +- yazi-dds/src/pubsub.rs | 16 ++++++------ 7 files changed, 42 insertions(+), 44 deletions(-) diff --git a/yazi-boot/src/actions/debug.rs b/yazi-boot/src/actions/debug.rs index e245a0dd..f75c2f3a 100644 --- a/yazi-boot/src/actions/debug.rs +++ b/yazi-boot/src/actions/debug.rs @@ -44,9 +44,9 @@ impl Actions { writeln!(s, "\nVariables")?; writeln!(s, " SHELL : {:?}", env::var_os("SHELL"))?; writeln!(s, " EDITOR : {:?}", env::var_os("EDITOR"))?; + writeln!(s, " VISUAL : {:?}", env::var_os("VISUAL"))?; writeln!(s, " YAZI_FILE_ONE : {:?}", env::var_os("YAZI_FILE_ONE"))?; writeln!(s, " YAZI_CONFIG_HOME : {:?}", env::var_os("YAZI_CONFIG_HOME"))?; - writeln!(s, " ZELLIJ_SESSION_NAME: {:?}", env::var_os("ZELLIJ_SESSION_NAME"))?; writeln!(s, "\nText Opener")?; writeln!( @@ -56,9 +56,11 @@ impl Actions { )?; writeln!(s, " block : {:?}", yazi_config::OPEN.block_opener("bulk.txt", "text/plain"))?; - writeln!(s, "\ntmux")?; - writeln!(s, " TMUX : {:?}", *yazi_adapter::TMUX)?; - writeln!(s, " Version: {}", Self::process_output("tmux", "-V"))?; + writeln!(s, "\nMultiplexers")?; + writeln!(s, " TMUX : {:?}", *yazi_adapter::TMUX)?; + writeln!(s, " tmux version : {}", Self::process_output("tmux", "-V"))?; + writeln!(s, " ZELLIJ_SESSION_NAME: {:?}", env::var_os("ZELLIJ_SESSION_NAME"))?; + writeln!(s, " Zellij version : {}", Self::process_output("zellij", "--version"))?; writeln!(s, "\nDependencies")?; writeln!( @@ -89,15 +91,19 @@ impl Actions { } fn process_output(name: impl AsRef, arg: impl AsRef) -> String { - match std::process::Command::new(name.as_ref()).arg(arg).output() { + match std::process::Command::new(&name).arg(arg).output() { Ok(out) if out.status.success() => { let line = String::from_utf8_lossy(&out.stdout).trim().lines().next().unwrap_or_default().to_owned(); - Regex::new(r"\d+\.\d+(\.\d+-\d+|\.\d+|\b)") - .unwrap() - .find(&line) - .map(|m| m.as_str().to_owned()) - .unwrap_or(line) + if name.as_ref() == "ya" { + line.trim_start_matches("Ya ").to_owned() + } else { + Regex::new(r"\d+\.\d+(\.\d+-\d+|\.\d+|\b)") + .unwrap() + .find(&line) + .map(|m| m.as_str().to_owned()) + .unwrap_or(line) + } } Ok(out) => format!("{:?}, {:?}", out.status, String::from_utf8_lossy(&out.stderr)), Err(e) => format!("{e}"), diff --git a/yazi-core/src/manager/commands/tab_switch.rs b/yazi-core/src/manager/commands/tab_switch.rs index dd6a8fb3..b07ee6bd 100644 --- a/yazi-core/src/manager/commands/tab_switch.rs +++ b/yazi-core/src/manager/commands/tab_switch.rs @@ -1,4 +1,3 @@ -use yazi_dds::Pubsub; use yazi_shared::{event::{Cmd, Data}, render}; use crate::manager::Tabs; @@ -29,8 +28,5 @@ impl Tabs { self.set_idx(idx); render!(); - - // Publish through DDS - Pubsub::pub_from_tab_switch(self.active().idx); } } diff --git a/yazi-core/src/manager/tabs.rs b/yazi-core/src/manager/tabs.rs index a005e571..c3ad191f 100644 --- a/yazi-core/src/manager/tabs.rs +++ b/yazi-core/src/manager/tabs.rs @@ -1,6 +1,7 @@ use std::ops::{Deref, DerefMut}; use yazi_boot::BOOT; +use yazi_dds::Pubsub; use yazi_proxy::ManagerProxy; use yazi_shared::fs::Url; @@ -47,7 +48,7 @@ impl Tabs { return; } - // Reset the preview of the previous active tab + // Reset the preview of the last active tab if let Some(active) = self.items.get_mut(self.cursor) { active.preview.reset_image(); } @@ -55,6 +56,7 @@ impl Tabs { self.cursor = idx; ManagerProxy::refresh(); ManagerProxy::peek(true); + Pubsub::pub_from_tab(idx); } } diff --git a/yazi-dds/src/body/body.rs b/yazi-dds/src/body/body.rs index d2eaccd8..3f22a876 100644 --- a/yazi-dds/src/body/body.rs +++ b/yazi-dds/src/body/body.rs @@ -2,7 +2,7 @@ use anyhow::{bail, Result}; use mlua::{ExternalResult, IntoLua, Lua, Value}; use serde::Serialize; -use super::{BodyBulk, BodyBye, BodyCd, BodyCustom, BodyDelete, BodyHey, BodyHi, BodyHover, BodyMove, BodyRename, BodyTabSwitch, BodyTrash, BodyYank}; +use super::{BodyBulk, BodyBye, BodyCd, BodyCustom, BodyDelete, BodyHey, BodyHi, BodyHover, BodyMove, BodyRename, BodyTab, BodyTrash, BodyYank}; use crate::Payload; #[derive(Debug, Serialize)] @@ -13,7 +13,7 @@ pub enum Body<'a> { Bye(BodyBye), Cd(BodyCd<'a>), Hover(BodyHover<'a>), - TabSwitch(BodyTabSwitch), + Tab(BodyTab), Rename(BodyRename<'a>), Bulk(BodyBulk<'a>), Yank(BodyYank<'a>), @@ -31,7 +31,7 @@ impl Body<'static> { "bye" => Self::Bye(serde_json::from_str(body)?), "cd" => Self::Cd(serde_json::from_str(body)?), "hover" => Self::Hover(serde_json::from_str(body)?), - "tab-switch" => Self::TabSwitch(serde_json::from_str(body)?), + "tab" => Self::Tab(serde_json::from_str(body)?), "rename" => Self::Rename(serde_json::from_str(body)?), "bulk" => Self::Bulk(serde_json::from_str(body)?), "@yank" => Self::Yank(serde_json::from_str(body)?), @@ -55,7 +55,7 @@ impl Body<'static> { | "bye" | "cd" | "hover" - | "tab-switch" + | "tab" | "rename" | "bulk" | "@yank" @@ -87,7 +87,7 @@ impl<'a> Body<'a> { Self::Bye(_) => "bye", Self::Cd(_) => "cd", Self::Hover(_) => "hover", - Self::TabSwitch(_) => "tab-switch", + Self::Tab(_) => "tab", Self::Rename(_) => "rename", Self::Bulk(_) => "bulk", Self::Yank(_) => "@yank", @@ -115,7 +115,7 @@ impl IntoLua<'_> for Body<'static> { Self::Bye(b) => b.into_lua(lua), Self::Cd(b) => b.into_lua(lua), Self::Hover(b) => b.into_lua(lua), - Self::TabSwitch(b) => b.into_lua(lua), + Self::Tab(b) => b.into_lua(lua), Self::Rename(b) => b.into_lua(lua), Self::Bulk(b) => b.into_lua(lua), Self::Yank(b) => b.into_lua(lua), diff --git a/yazi-dds/src/body/tab.rs b/yazi-dds/src/body/tab.rs index 1a99657c..0a2020ed 100644 --- a/yazi-dds/src/body/tab.rs +++ b/yazi-dds/src/body/tab.rs @@ -4,27 +4,21 @@ use serde::{Deserialize, Serialize}; use super::Body; #[derive(Debug, Serialize, Deserialize)] -pub struct BodyTabSwitch { - /// The index of the tab - pub tab: usize, +pub struct BodyTab { + pub idx: usize, } -impl<'a> BodyTabSwitch { +impl BodyTab { #[inline] - pub fn borrowed(tab: usize) -> Body<'a> { Self { tab }.into() } + pub fn owned(idx: usize) -> Body<'static> { Self { idx }.into() } } -impl BodyTabSwitch { - #[inline] - pub fn dummy(tab: usize) -> Body<'static> { Self { tab }.into() } +impl<'a> From for Body<'a> { + fn from(value: BodyTab) -> Self { Self::Tab(value) } } -impl<'a> From for Body<'a> { - fn from(value: BodyTabSwitch) -> Self { Self::TabSwitch(value) } -} - -impl IntoLua<'_> for BodyTabSwitch { +impl IntoLua<'_> for BodyTab { fn into_lua(self, lua: &Lua) -> mlua::Result { - lua.create_table_from([("tab", self.tab)])?.into_lua(lua) + lua.create_table_from([("idx", self.idx)])?.into_lua(lua) } } diff --git a/yazi-dds/src/payload.rs b/yazi-dds/src/payload.rs index 54e36b73..45459b33 100644 --- a/yazi-dds/src/payload.rs +++ b/yazi-dds/src/payload.rs @@ -82,7 +82,7 @@ impl Display for Payload<'_> { Body::Bye(b) => serde_json::to_string(b), Body::Cd(b) => serde_json::to_string(b), Body::Hover(b) => serde_json::to_string(b), - Body::TabSwitch(b) => serde_json::to_string(b), + Body::Tab(b) => serde_json::to_string(b), Body::Rename(b) => serde_json::to_string(b), Body::Bulk(b) => serde_json::to_string(b), Body::Yank(b) => serde_json::to_string(b), diff --git a/yazi-dds/src/pubsub.rs b/yazi-dds/src/pubsub.rs index 77e9e935..2ade3415 100644 --- a/yazi-dds/src/pubsub.rs +++ b/yazi-dds/src/pubsub.rs @@ -5,7 +5,7 @@ use parking_lot::RwLock; use yazi_boot::BOOT; use yazi_shared::{fs::Url, RoCell}; -use crate::{body::{Body, BodyBulk, BodyCd, BodyDelete, BodyHi, BodyHover, BodyMove, BodyMoveItem, BodyRename, BodyTabSwitch, BodyTrash, BodyYank}, Client, ID, PEERS}; +use crate::{body::{Body, BodyBulk, BodyCd, BodyDelete, BodyHi, BodyHover, BodyMove, BodyMoveItem, BodyRename, BodyTab, BodyTrash, BodyYank}, Client, ID, PEERS}; pub static LOCAL: RoCell>>>> = RoCell::new(); @@ -112,15 +112,15 @@ impl Pubsub { } } - pub fn pub_from_tab_switch(tab: usize) { - if LOCAL.read().contains_key("tab-switch") { - Self::pub_(BodyTabSwitch::dummy(tab)); + pub fn pub_from_tab(idx: usize) { + if LOCAL.read().contains_key("tab") { + Self::pub_(BodyTab::owned(idx)); } - if PEERS.read().values().any(|p| p.able("tab-switch")) { - Client::push(BodyTabSwitch::borrowed(tab)); + if PEERS.read().values().any(|p| p.able("tab")) { + Client::push(BodyTab::owned(idx)); } - if BOOT.local_events.contains("tab-switch") { - BodyTabSwitch::borrowed(tab).with_receiver(*ID).flush(); + if BOOT.local_events.contains("tab") { + BodyTab::owned(idx).with_receiver(*ID).flush(); } }