refactor: create console_static_text in single place (#31645)

This commit is contained in:
David Sherret 2025-12-17 11:20:48 -05:00 committed by GitHub
parent 3df3f275df
commit 7c98c6f3f3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 16 additions and 22 deletions

View file

@ -3,7 +3,6 @@
use std::collections::HashSet;
use std::io;
use console_static_text::ConsoleSize;
use console_static_text::TextItem;
use crossterm::ExecutableCommand;
use crossterm::cursor;
@ -18,6 +17,7 @@ use unicode_width::UnicodeWidthStr;
use crate::util::console::HideCursorGuard;
use crate::util::console::RawMode;
use crate::util::console::new_console_static_text;
pub fn select_items<T, TRender>(
instructions_line: &str,
@ -35,20 +35,7 @@ where
let mut stderr = io::stderr();
let raw_mode = RawMode::enable()?;
let mut static_text =
console_static_text::ConsoleStaticText::new(move || {
if let Ok((cols, rows)) = terminal::size() {
ConsoleSize {
cols: Some(cols),
rows: Some(rows),
}
} else {
ConsoleSize {
cols: None,
rows: None,
}
}
});
let mut static_text = new_console_static_text();
static_text.keep_cursor_zero_column(true);
let (_, start_row) = cursor::position().unwrap_or_default();

View file

@ -3,6 +3,7 @@
use std::io;
use std::sync::Arc;
use console_static_text::ConsoleStaticText;
use crossterm::ExecutableCommand;
use crossterm::cursor;
use crossterm::event::KeyCode;
@ -21,6 +22,17 @@ pub fn console_size() -> Option<ConsoleSize> {
deno_runtime::ops::tty::console_size(stderr).ok()
}
pub fn new_console_static_text() -> ConsoleStaticText {
ConsoleStaticText::new(move || {
let size = console_size();
let to_u16 = |value: u32| value.min(u16::MAX as u32) as u16;
console_static_text::ConsoleSize {
cols: size.map(|size| size.cols).map(to_u16),
rows: size.map(|size| size.rows).map(to_u16),
}
})
}
pub struct RawMode {
needs_disable: bool,
}

View file

@ -10,6 +10,7 @@ use deno_core::unsync::spawn_blocking;
use deno_runtime::ops::tty::ConsoleSize;
use once_cell::sync::Lazy;
use super::console::new_console_static_text;
use crate::util::console::console_size;
/// Renders text that will be displayed stacked in a
@ -61,13 +62,7 @@ static INTERNAL_STATE: Lazy<Arc<Mutex<InternalState>>> = Lazy::new(|| {
has_draw_thread: false,
entries: Vec::new(),
next_entry_id: 0,
static_text: ConsoleStaticText::new(|| {
let size = console_size().unwrap();
console_static_text::ConsoleSize {
cols: Some(size.cols as u16),
rows: Some(size.rows as u16),
}
}),
static_text: new_console_static_text(),
}))
});