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

+6 -7
View File
@@ -204,12 +204,6 @@ impl TerminalView {
PtyEvent::Folder(folder) => cx.emit(TerminalEvent::Folder(folder)),
PtyEvent::Term(event) => self.term_event(event, cx),
PtyEvent::Mouse(mode) => self.mouse = mode,
PtyEvent::Reset => {
log::debug!("terminal {}: a reset; the title follows", self.pty.pid);
// Setting the options sends the grid's title, empty after a reset.
let settings = config(SettingsStore::get(cx));
self.pty.term.lock().set_options(settings);
}
}
}
// ponytail: a full search per output batch while find is open; search only new lines if it lags.
@@ -222,7 +216,12 @@ impl TerminalView {
fn term_event(&mut self, event: Event, cx: &mut Context<Self>) {
match event {
Event::Wakeup => self.shown = true,
Event::MouseCursorDirty | Event::CursorBlinkingChange => {}
Event::MouseCursorDirty => {}
// A reset empties the title and sends only this; setting the options sends the title.
Event::CursorBlinkingChange => {
let settings = config(SettingsStore::get(cx));
self.pty.term.lock().set_options(settings);
}
Event::Title(title) => cx.emit(TerminalEvent::Title(title)),
Event::ResetTitle => cx.emit(TerminalEvent::Title(String::new())),
Event::Bell => {