T10: following the current match takes one pass: a forward walk maps matches to cells, line ends are found once; the same occurrence ranks by an identical line, then one grown or cut at its end, then by line and column; a cleared or trimmed history moves no line; the title replays on CursorBlinkingChange, which a reset sends in the parser's order, synchronized updates too, and the tap's reset count is gone
CI / platforms (windows-latest) (push) Failing after 9s
CI / macos (push) Failing after 8m27s
CI / platforms (ubuntu-24.04) (push) Canceled after 0s

This commit is contained in:
ZacharyZhang-NY committed 2026-10-14 17:30:21 -04:00
1 parent 1c21dfd197
commit 11b2ce6f34
8 files changed
+185 -73

No files matched your search

+2 -10
View File
@@ -53,12 +53,7 @@ impl<P: EventedReadWrite> io::Read for Tapped<P> {
log::debug!("pty {pid}: a folder report after its session closed");
}
});
let resets = self.mouse.resets;
let changed = self.mouse.feed(&buf[..count]);
if self.mouse.resets != resets && events.unbounded_send(PtyEvent::Reset).is_err() {
log::debug!("pty {pid}: a reset after its session closed");
}
if let Some(mode) = changed {
if let Some(mode) = self.mouse.feed(&buf[..count]) {
log::info!("pty {pid}: mouse {mode:?}");
if events.unbounded_send(PtyEvent::Mouse(mode)).is_err() {
log::debug!("pty {pid}: a mouse mode after its session closed");
@@ -199,7 +194,7 @@ enum Csi {
Private,
}
/// The mouse modes as xterm holds them, and resets, read as vte reads; alacritty drops 9.
/// The mouse modes as xterm holds them, read as vte reads; alacritty drops 9.
#[derive(Default)]
pub(crate) struct MouseModes {
state: Csi,
@@ -209,8 +204,6 @@ pub(crate) struct MouseModes {
/// Past a `:`, whose subparameters the parser's mode sets skip.
sub: bool,
mode: MouseMode,
/// Full resets, `ESC c`, seen so far.
pub resets: usize,
}
impl MouseModes {
@@ -237,7 +230,6 @@ impl MouseModes {
(Csi::Escape, b'[') => Csi::Bracket,
(Csi::Escape, b'c') => {
self.mode = MouseMode::default();
self.resets += 1;
Csi::Ground
}
(Csi::Bracket, b'?') => {