feat: toggle wrapping in shell output windows

This commit is contained in:
2026-10-18 01:23:19 +02:00
parent 00207b5526
commit 074df97c02
4 changed files with 125 additions and 23 deletions
+40 -1
View File
@@ -15430,7 +15430,13 @@ fn shell_output_panel_clips_sanitized_content_in_offset_and_tiny_areas() {
.unwrap();
terminal
.draw(|frame| {
draw_diagnostic_panel(frame, diagnostic, area, "shell title", false);
draw_diagnostic_panel(
frame,
diagnostic,
area,
"shell title",
editor.command_output(),
);
})
.unwrap();
assert!(!terminal.backend().cursor_visible());
@@ -15444,3 +15450,36 @@ fn shell_output_panel_clips_sanitized_content_in_offset_and_tiny_areas() {
}
}
}
#[test]
fn shell_output_wrap_toggle_reflows_and_scrolls_without_changing_source() {
let mut session = EditorSession::open(None, vec![], None).unwrap();
let source_wrap = session.editor().word_wrap();
let source = session.editor().lines().to_vec();
session.editor_mut().show_command_output(
"long output".into(),
Err(format!("{}TAIL", "abcdefghij".repeat(30))),
);
let mut terminal = Terminal::new(ratatui::backend::TestBackend::new(42, 14)).unwrap();
let mut views = BufferViewports::default();
terminal
.draw(|frame| views.draw_session(frame, &mut session))
.unwrap();
assert!(!screen_text(&terminal).contains("TAIL"));
session.handle(Input::Char('w'));
terminal
.draw(|frame| views.draw_session(frame, &mut session))
.unwrap();
assert!(screen_text(&terminal).contains("TAIL"));
session.handle(Input::Down);
assert_eq!(session.editor().command_output().unwrap().content.top, 1);
session.handle(Input::Right);
assert_eq!(session.editor().command_output().unwrap().content.left, 0);
session.handle(Input::Char('w'));
terminal
.draw(|frame| views.draw_session(frame, &mut session))
.unwrap();
assert!(!screen_text(&terminal).contains("TAIL"));
assert_eq!(session.editor().word_wrap(), source_wrap);
assert_eq!(session.editor().lines(), source);
}