Merge pull request #1693 from zed-industries/terminal-tidying
Terminal Tidying
This commit is contained in:
commit
2758234e03
2 changed files with 34 additions and 8 deletions
|
@ -618,8 +618,34 @@ impl Terminal {
|
||||||
term.resize(new_size);
|
term.resize(new_size);
|
||||||
}
|
}
|
||||||
InternalEvent::Clear => {
|
InternalEvent::Clear => {
|
||||||
self.write_to_pty("\x0c".to_string());
|
// Clear back buffer
|
||||||
term.clear_screen(ClearMode::Saved);
|
term.clear_screen(ClearMode::Saved);
|
||||||
|
|
||||||
|
let cursor = term.grid().cursor.point;
|
||||||
|
|
||||||
|
// Clear the lines above
|
||||||
|
term.grid_mut().reset_region(..cursor.line);
|
||||||
|
|
||||||
|
// Copy the current line up
|
||||||
|
let line = term.grid()[cursor.line][..cursor.column]
|
||||||
|
.iter()
|
||||||
|
.cloned()
|
||||||
|
.enumerate()
|
||||||
|
.collect::<Vec<(usize, Cell)>>();
|
||||||
|
|
||||||
|
for (i, cell) in line {
|
||||||
|
term.grid_mut()[Line(0)][Column(i)] = cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset the cursor
|
||||||
|
term.grid_mut().cursor.point =
|
||||||
|
Point::new(Line(0), term.grid_mut().cursor.point.column);
|
||||||
|
let new_cursor = term.grid().cursor.point;
|
||||||
|
|
||||||
|
// Clear the lines below the new cursor
|
||||||
|
if (new_cursor.line.0 as usize) < term.screen_lines() - 1 {
|
||||||
|
term.grid_mut().reset_region((new_cursor.line + 1)..);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
InternalEvent::Scroll(scroll) => {
|
InternalEvent::Scroll(scroll) => {
|
||||||
term.scroll_display(*scroll);
|
term.scroll_display(*scroll);
|
||||||
|
|
|
@ -680,12 +680,12 @@ impl Element for TerminalElement {
|
||||||
let focused = self.focused;
|
let focused = self.focused;
|
||||||
TerminalElement::shape_cursor(cursor_point, dimensions, &cursor_text).map(
|
TerminalElement::shape_cursor(cursor_point, dimensions, &cursor_text).map(
|
||||||
move |(cursor_position, block_width)| {
|
move |(cursor_position, block_width)| {
|
||||||
let shape = match cursor.shape {
|
let (shape, text) = match cursor.shape {
|
||||||
AlacCursorShape::Block if !focused => CursorShape::Hollow,
|
AlacCursorShape::Block if !focused => (CursorShape::Hollow, None),
|
||||||
AlacCursorShape::Block => CursorShape::Block,
|
AlacCursorShape::Block => (CursorShape::Block, Some(cursor_text)),
|
||||||
AlacCursorShape::Underline => CursorShape::Underscore,
|
AlacCursorShape::Underline => (CursorShape::Underscore, None),
|
||||||
AlacCursorShape::Beam => CursorShape::Bar,
|
AlacCursorShape::Beam => (CursorShape::Bar, None),
|
||||||
AlacCursorShape::HollowBlock => CursorShape::Hollow,
|
AlacCursorShape::HollowBlock => (CursorShape::Hollow, None),
|
||||||
//This case is handled in the if wrapping the whole cursor layout
|
//This case is handled in the if wrapping the whole cursor layout
|
||||||
AlacCursorShape::Hidden => unreachable!(),
|
AlacCursorShape::Hidden => unreachable!(),
|
||||||
};
|
};
|
||||||
|
@ -696,7 +696,7 @@ impl Element for TerminalElement {
|
||||||
dimensions.line_height,
|
dimensions.line_height,
|
||||||
terminal_theme.colors.cursor,
|
terminal_theme.colors.cursor,
|
||||||
shape,
|
shape,
|
||||||
Some(cursor_text),
|
text,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue