diff --git a/scripts/publish.sh b/scripts/publish.sh index 637f436af..49368e6f3 100755 --- a/scripts/publish.sh +++ b/scripts/publish.sh @@ -1,11 +1,15 @@ +cargo publish -p yazi-macro +sleep 30 +cargo publish -p yazi-codegen +sleep 30 cargo publish -p yazi-shared sleep 30 +cargo publish -p yazi-fs +sleep 30 cargo publish -p yazi-config sleep 30 cargo publish -p yazi-proxy sleep 30 -cargo publish -p yazi-fs -sleep 30 cargo publish -p yazi-adapter sleep 30 cargo publish -p yazi-boot diff --git a/yazi-adapter/src/brand.rs b/yazi-adapter/src/brand.rs index 5aa7b69e3..0a87e058e 100644 --- a/yazi-adapter/src/brand.rs +++ b/yazi-adapter/src/brand.rs @@ -1,7 +1,7 @@ use tracing::warn; use yazi_shared::env_exists; -use crate::Mux; +use crate::{Mux, NVIM}; #[derive(Clone, Copy, Debug)] pub enum Brand { @@ -27,7 +27,7 @@ impl Brand { pub fn from_env() -> Option { use Brand as B; - if env_exists("NVIM_LOG_FILE") && env_exists("NVIM") { + if *NVIM { return Some(Self::Neovim); } diff --git a/yazi-adapter/src/emulator.rs b/yazi-adapter/src/emulator.rs index faea3aa97..db13f98e4 100644 --- a/yazi-adapter/src/emulator.rs +++ b/yazi-adapter/src/emulator.rs @@ -136,9 +136,9 @@ impl Emulator { execute!( LineWriter::new(stderr()), - Print("\x1b[16t"), // Request cell size - Print("\x1b]11;?\x07"), // Request background color - Print(Mux::csi("\x1b[0c")), // Request device attributes + Print("\x1b[16t"), // Request cell size + Print("\x1b]11;?\x07"), // Request background color + Print("\x1b[0c"), // Request device attributes )?; let resp = futures::executor::block_on(Self::read_until_da1()); diff --git a/yazi-adapter/src/lib.rs b/yazi-adapter/src/lib.rs index 1b177e54e..b3fe9162b 100644 --- a/yazi-adapter/src/lib.rs +++ b/yazi-adapter/src/lib.rs @@ -21,6 +21,9 @@ static CLOSE: RoCell<&'static str> = RoCell::new(); // WSL support pub static WSL: RoCell = RoCell::new(); +// Neovim support +pub static NVIM: RoCell = RoCell::new(); + pub fn init() -> anyhow::Result<()> { // Tmux support TMUX.init(env_exists("TMUX_PANE") && env_exists("TMUX")); @@ -29,17 +32,24 @@ pub fn init() -> anyhow::Result<()> { CLOSE.init(if *TMUX { "\x1b\\" } else { "" }); if *TMUX { - _ = std::process::Command::new("tmux") + let status = std::process::Command::new("tmux") .args(["set", "-p", "allow-passthrough", "all"]) .stdin(std::process::Stdio::null()) .stdout(std::process::Stdio::null()) .stderr(std::process::Stdio::null()) .status(); + + if !status.as_ref().is_ok_and(|s| s.success()) { + tracing::error!("Failed to enable tmux passthrough: {:?}", status); + } } // WSL support WSL.init(in_wsl()); + // Neovim support + NVIM.init(env_exists("NVIM_LOG_FILE") && env_exists("NVIM")); + EMULATOR.init(Emulator::detect()); yazi_config::init_flavor(EMULATOR.light)?; diff --git a/yazi-adapter/src/mux.rs b/yazi-adapter/src/mux.rs index abd095c5b..695eb5dc6 100644 --- a/yazi-adapter/src/mux.rs +++ b/yazi-adapter/src/mux.rs @@ -1,10 +1,10 @@ -use crate::{CLOSE, ESCAPE, START, TMUX}; +use crate::{CLOSE, ESCAPE, NVIM, START, TMUX}; pub struct Mux; impl Mux { pub fn csi(s: &str) -> std::borrow::Cow { - if *TMUX { + if *TMUX && !*NVIM { std::borrow::Cow::Owned(format!( "{}{}{}", *START, diff --git a/yazi-boot/src/actions/debug.rs b/yazi-boot/src/actions/debug.rs index ced554edb..216e680ab 100644 --- a/yazi-boot/src/actions/debug.rs +++ b/yazi-boot/src/actions/debug.rs @@ -41,6 +41,10 @@ impl Actions { writeln!(s, "\nWSL")?; writeln!(s, " WSL: {:?}", *yazi_adapter::WSL)?; + writeln!(s, "\nNVIM")?; + writeln!(s, " NVIM : {:?}", *yazi_adapter::NVIM)?; + writeln!(s, " Neovim version: {}", Self::process_output("nvim", "--version"))?; + writeln!(s, "\nVariables")?; writeln!(s, " SHELL : {:?}", env::var_os("SHELL"))?; writeln!(s, " EDITOR : {:?}", env::var_os("EDITOR"))?; diff --git a/yazi-codegen/Cargo.toml b/yazi-codegen/Cargo.toml index d4397a0b9..4a8905bc4 100644 --- a/yazi-codegen/Cargo.toml +++ b/yazi-codegen/Cargo.toml @@ -13,5 +13,5 @@ proc-macro = true [dependencies] # External dependencies -syn = "2.0.90" +syn = { version = "2.0.90", features = [ "full" ] } quote = "1.0.37"