diff --git a/src/input_common.rs b/src/input_common.rs index 085df82d4..f98b02237 100644 --- a/src/input_common.rs +++ b/src/input_common.rs @@ -470,11 +470,16 @@ pub fn kitty_progressive_enhancements_query() -> &'static [u8] { } static IS_TMUX: RelaxedAtomicBool = RelaxedAtomicBool::new(false); -pub static IN_MIDNIGHT_COMMANDER_PRE_CSI_U: RelaxedAtomicBool = RelaxedAtomicBool::new(false); + +pub(crate) static IN_MIDNIGHT_COMMANDER: RelaxedAtomicBool = RelaxedAtomicBool::new(false); +pub(crate) static IN_DVTM: RelaxedAtomicBool = RelaxedAtomicBool::new(false); static IN_ITERM_PRE_CSI_U: RelaxedAtomicBool = RelaxedAtomicBool::new(false); pub fn terminal_protocol_hacks() { use std::env::var_os; + IN_MIDNIGHT_COMMANDER.store(var_os("MC_TMPDIR").is_some()); + IN_DVTM + .store(var_os("TERM").is_some_and(|term| term.as_os_str().as_bytes() == b"dvtm-256color")); IS_TMUX.store(var_os("TMUX").is_some()); IN_ITERM_PRE_CSI_U.store( var_os("LC_TERMINAL").is_some_and(|term| term.as_os_str().as_bytes() == b"iTerm2") @@ -522,9 +527,6 @@ pub fn terminal_protocols_enable_ifn() { } did_write.store(true); } - if IN_MIDNIGHT_COMMANDER_PRE_CSI_U.load() { - return; - } let kitty_keyboard_supported = KITTY_KEYBOARD_SUPPORTED.load(Ordering::Relaxed); if kitty_keyboard_supported == Capability::Unknown as _ { return; diff --git a/src/reader.rs b/src/reader.rs index 4c27fad47..728611097 100644 --- a/src/reader.rs +++ b/src/reader.rs @@ -88,7 +88,8 @@ use crate::input_common::ImplicitEvent; use crate::input_common::InputEventQueuer; use crate::input_common::Queried; -use crate::input_common::IN_MIDNIGHT_COMMANDER_PRE_CSI_U; +use crate::input_common::IN_DVTM; +use crate::input_common::IN_MIDNIGHT_COMMANDER; use crate::input_common::KITTY_KEYBOARD_SUPPORTED; use crate::input_common::SYNCHRONIZED_OUTPUT_SUPPORTED; use crate::input_common::{ @@ -2166,7 +2167,7 @@ fn readline(&mut self, nchars: Option) -> Option { } if zelf.blocking_wait == Some(BlockingWait::Startup(Queried::NotYet)) { - if is_dumb() { + if is_dumb() || IN_MIDNIGHT_COMMANDER.load() || IN_DVTM.load() { zelf.blocking_wait = None; } else { zelf.blocking_wait = Some(BlockingWait::Startup(Queried::Once)); @@ -4415,10 +4416,6 @@ fn reader_interactive_init(parser: &Parser) { .set_one(L!("_"), EnvMode::GLOBAL, L!("fish").to_owned()); terminal_protocol_hacks(); - IN_MIDNIGHT_COMMANDER_PRE_CSI_U.store( - parser.vars().get_unless_empty(L!("MC_TMPDIR")).is_some() - && parser.vars().get_unless_empty(L!("__mc_csi_u")).is_none(), - ); } struct DisplayAsHex<'a>(&'a str);