mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-02-13 23:53:47 +08:00
Work around st terminal resetting cursor on CSI ? u
The st terminal wrongly parses CSI ? u as DECRC. A fix has been proposed upstream. Let's also work around it I guess (not to mention that querying in the first place is also sort of a workaround).
This commit is contained in:
parent
95d61ea0fb
commit
630a06cf8f
|
@ -19,9 +19,9 @@ use crate::{
|
|||
env::env_init,
|
||||
input::input_terminfo_get_name,
|
||||
input_common::{
|
||||
enable_kitty_progressive_enhancements, terminal_protocol_hacks,
|
||||
terminal_protocols_enable_ifn, CharEvent, ImplicitEvent, InputEventQueue, InputEventQueuer,
|
||||
KITTY_PROGRESSIVE_ENHANCEMENTS_QUERY,
|
||||
enable_kitty_progressive_enhancements, kitty_progressive_enhancements_query,
|
||||
terminal_protocol_hacks, terminal_protocols_enable_ifn, CharEvent, ImplicitEvent,
|
||||
InputEventQueue, InputEventQueuer,
|
||||
},
|
||||
key::{char_to_symbol, Key},
|
||||
nix::isatty,
|
||||
|
@ -144,7 +144,7 @@ fn setup_and_process_keys(streams: &mut IoStreams, continuous_mode: bool, verbos
|
|||
terminal_protocol_hacks();
|
||||
streams
|
||||
.out
|
||||
.append(str2wcstring(KITTY_PROGRESSIVE_ENHANCEMENTS_QUERY));
|
||||
.append(str2wcstring(kitty_progressive_enhancements_query()));
|
||||
|
||||
if continuous_mode {
|
||||
streams.err.append(L!("\n"));
|
||||
|
|
|
@ -458,7 +458,12 @@ macro_rules! kitty_progressive_enhancements {
|
|||
};
|
||||
}
|
||||
|
||||
pub const KITTY_PROGRESSIVE_ENHANCEMENTS_QUERY: &[u8] = b"\x1b[?u";
|
||||
pub fn kitty_progressive_enhancements_query() -> &'static [u8] {
|
||||
if std::env::var_os("TERM").is_some_and(|term| term.as_os_str().as_bytes() == b"st-256color") {
|
||||
return b"";
|
||||
}
|
||||
b"\x1b[?u"
|
||||
}
|
||||
|
||||
pub(crate) fn enable_kitty_progressive_enhancements() -> bool {
|
||||
if IN_MIDNIGHT_COMMANDER_PRE_CSI_U.load() || IN_ITERM_PRE_CSI_U.load() {
|
||||
|
|
|
@ -82,12 +82,12 @@ use crate::history::{
|
|||
};
|
||||
use crate::input::init_input;
|
||||
use crate::input_common::enable_kitty_progressive_enhancements;
|
||||
use crate::input_common::kitty_progressive_enhancements_query;
|
||||
use crate::input_common::CursorPositionBlockingWait;
|
||||
use crate::input_common::CursorPositionWait;
|
||||
use crate::input_common::ImplicitEvent;
|
||||
use crate::input_common::InputEventQueuer;
|
||||
use crate::input_common::IN_MIDNIGHT_COMMANDER_PRE_CSI_U;
|
||||
use crate::input_common::KITTY_PROGRESSIVE_ENHANCEMENTS_QUERY;
|
||||
use crate::input_common::{
|
||||
terminal_protocol_hacks, terminal_protocols_enable_ifn, CharEvent, CharInputStyle, InputData,
|
||||
ReadlineCmd,
|
||||
|
@ -2163,7 +2163,7 @@ impl<'a> Reader<'a> {
|
|||
let mut out = Outputter::stdoutput().borrow_mut();
|
||||
out.begin_buffering();
|
||||
// Query for kitty keyboard protocol support.
|
||||
let _ = out.write(KITTY_PROGRESSIVE_ENHANCEMENTS_QUERY);
|
||||
let _ = out.write(kitty_progressive_enhancements_query());
|
||||
// Query for cursor position reporting support.
|
||||
zelf.request_cursor_position(&mut out, CursorPositionWait::InitialFeatureProbe);
|
||||
// Query for synchronized output support.
|
||||
|
|
Loading…
Reference in New Issue
Block a user