mirror of
https://github.com/denoland/deno.git
synced 2025-12-23 08:48:24 +00:00
refactor: create console_static_text in single place (#31645)
This commit is contained in:
parent
3df3f275df
commit
7c98c6f3f3
3 changed files with 16 additions and 22 deletions
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
}))
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue