Increase escape sequence timeout while waiting for query response

Running "fish -d reader" inside SSH inside Windows terminal sometimes
results in hangs on startup (or whenever we run "scrollback-push"),
because not all of the Primary DA response is available for reading
at once:

	reader: Incomplete escape sequence: \e\[?61\;4\;6\;7\;14\;21\;22\;23\;24\;28\;32

Work around this by increasing the read timeout while we're waiting
for query responses.

We should try to find a better (more comprehensive?) fix in future,
but for the patch release, this small change will do.

Fixes #11841
This commit is contained in:
Johannes Altmanninger
2025-09-30 18:41:17 +02:00
parent b774c54a6f
commit abd23d2a1b
2 changed files with 5 additions and 1 deletions

View File

@@ -14,6 +14,7 @@ This release fixes the following regressions identified in 4.1.0:
Since ``LC_MESSAGES`` is not exported, it will not affect fish's child processes.
- Some :doc:`fish_config <cmds/fish_config>` subcommands for prompts and themes were broken in standalone Linux builds (those using the ``embed-data`` cargo feature), which has been fixed (:issue:`11832`).
- On Windows Terminal, we observed an issue where fish would fail to read a response to startup queries, causing brief hangs and a misleading error message. A workaround has been added (:issue:`11841`).
- Our new workaround for WezTerm's `issues with modifyOtherKeys <https://github.com/wezterm/wezterm/issues/6087>`__ breaking shifted keys was broken on some versions of WezTerm, which has been fixed (:issue:`11204`).
- Fixed a crash in :doc:`the web-based configuration tool <cmds/fish_config>` when using the new underline styles (:issue:`11840`).

View File

@@ -984,7 +984,10 @@ fn try_readb(&mut self, buffer: &mut Vec<u8>) -> Option<u8> {
if !check_fd_readable(
fd,
Duration::from_millis(
if self.paste_is_buffering() || get_kitty_keyboard_capability() == Some(&true) {
if self.paste_is_buffering()
|| self.is_blocked_querying()
|| get_kitty_keyboard_capability() == Some(&true)
{
300
} else {
1