mirror of
https://github.com/helix-editor/helix.git
synced 2025-10-06 00:13:28 +02:00
Use the default terminal size when runtime detection fails
This commit adds a fallback terminal size to use when runtime detection fails. Since calling `size` from `Terminal` will never fail now, it also changes the function’s signature. If the client code wants to know whether the call succeeded or failed, it’s still possible to call `size` via `Backend`.
This commit is contained in:
committed by
Michael Davis
parent
0ebe450991
commit
ba506a51cb
@@ -125,7 +125,7 @@ impl Application {
|
|||||||
|
|
||||||
let theme_mode = backend.get_theme_mode();
|
let theme_mode = backend.get_theme_mode();
|
||||||
let terminal = Terminal::new(backend)?;
|
let terminal = Terminal::new(backend)?;
|
||||||
let area = terminal.size().expect("couldn't get terminal size");
|
let area = terminal.size();
|
||||||
let mut compositor = Compositor::new(area);
|
let mut compositor = Compositor::new(area);
|
||||||
let config = Arc::new(ArcSwap::from_pointee(config));
|
let config = Arc::new(ArcSwap::from_pointee(config));
|
||||||
let handlers = handlers::setup(config.clone());
|
let handlers = handlers::setup(config.clone());
|
||||||
@@ -542,7 +542,7 @@ impl Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// redraw the terminal
|
// redraw the terminal
|
||||||
let area = self.terminal.size().expect("couldn't get terminal size");
|
let area = self.terminal.size();
|
||||||
self.compositor.resize(area);
|
self.compositor.resize(area);
|
||||||
self.terminal.clear().expect("couldn't clear terminal");
|
self.terminal.clear().expect("couldn't clear terminal");
|
||||||
|
|
||||||
@@ -700,7 +700,7 @@ impl Application {
|
|||||||
.resize(Rect::new(0, 0, cols, rows))
|
.resize(Rect::new(0, 0, cols, rows))
|
||||||
.expect("Unable to resize terminal");
|
.expect("Unable to resize terminal");
|
||||||
|
|
||||||
let area = self.terminal.size().expect("couldn't get terminal size");
|
let area = self.terminal.size();
|
||||||
|
|
||||||
self.compositor.resize(area);
|
self.compositor.resize(area);
|
||||||
|
|
||||||
@@ -729,7 +729,7 @@ impl Application {
|
|||||||
.resize(Rect::new(0, 0, width, height))
|
.resize(Rect::new(0, 0, width, height))
|
||||||
.expect("Unable to resize terminal");
|
.expect("Unable to resize terminal");
|
||||||
|
|
||||||
let area = self.terminal.size().expect("couldn't get terminal size");
|
let area = self.terminal.size();
|
||||||
|
|
||||||
self.compositor.resize(area);
|
self.compositor.resize(area);
|
||||||
|
|
||||||
|
@@ -73,6 +73,14 @@ where
|
|||||||
viewport: Viewport,
|
viewport: Viewport,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Default terminal size: 80 columns, 24 lines
|
||||||
|
pub const DEFAULT_TERMINAL_SIZE: Rect = Rect {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
width: 80,
|
||||||
|
height: 24,
|
||||||
|
};
|
||||||
|
|
||||||
impl<B> Terminal<B>
|
impl<B> Terminal<B>
|
||||||
where
|
where
|
||||||
B: Backend,
|
B: Backend,
|
||||||
@@ -80,7 +88,7 @@ where
|
|||||||
/// Wrapper around Terminal initialization. Each buffer is initialized with a blank string and
|
/// Wrapper around Terminal initialization. Each buffer is initialized with a blank string and
|
||||||
/// default colors for the foreground and the background
|
/// default colors for the foreground and the background
|
||||||
pub fn new(backend: B) -> io::Result<Terminal<B>> {
|
pub fn new(backend: B) -> io::Result<Terminal<B>> {
|
||||||
let size = backend.size()?;
|
let size = backend.size().unwrap_or(DEFAULT_TERMINAL_SIZE);
|
||||||
Terminal::with_options(
|
Terminal::with_options(
|
||||||
backend,
|
backend,
|
||||||
TerminalOptions {
|
TerminalOptions {
|
||||||
@@ -159,7 +167,7 @@ where
|
|||||||
|
|
||||||
/// Queries the backend for size and resizes if it doesn't match the previous size.
|
/// Queries the backend for size and resizes if it doesn't match the previous size.
|
||||||
pub fn autoresize(&mut self) -> io::Result<Rect> {
|
pub fn autoresize(&mut self) -> io::Result<Rect> {
|
||||||
let size = self.size()?;
|
let size = self.size();
|
||||||
if size != self.viewport.area {
|
if size != self.viewport.area {
|
||||||
self.resize(size)?;
|
self.resize(size)?;
|
||||||
};
|
};
|
||||||
@@ -235,7 +243,7 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Queries the real size of the backend.
|
/// Queries the real size of the backend.
|
||||||
pub fn size(&self) -> io::Result<Rect> {
|
pub fn size(&self) -> Rect {
|
||||||
self.backend.size()
|
self.backend.size().unwrap_or(DEFAULT_TERMINAL_SIZE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user