Cargo.lock 🔗
@@ -16070,6 +16070,7 @@ dependencies = [
"gpui",
"itertools 0.14.0",
"libc",
+ "log",
"rand 0.9.1",
"regex",
"release_channel",
Jakub Konka created
Tracing terminal events can now be enabled using typical `RUST_LOG`
invocation:
```
RUST_LOG=info,terminal=trace,alacritty_terminal=trace cargo run
```
Release Notes:
- N/A
Cargo.lock | 1 +
crates/terminal/Cargo.toml | 1 +
crates/terminal/src/terminal.rs | 12 ++++++++++++
3 files changed, 14 insertions(+)
@@ -16070,6 +16070,7 @@ dependencies = [
"gpui",
"itertools 0.14.0",
"libc",
+ "log",
"rand 0.9.1",
"regex",
"release_channel",
@@ -26,6 +26,7 @@ collections.workspace = true
futures.workspace = true
gpui.workspace = true
libc.workspace = true
+log.workspace = true
release_channel.workspace = true
schemars.workspace = true
serde.workspace = true
@@ -26,6 +26,7 @@ use alacritty_terminal::{
},
};
use anyhow::{Context as _, Result, bail};
+use log::trace;
use futures::{
FutureExt,
@@ -865,6 +866,7 @@ impl Terminal {
) {
match event {
&InternalEvent::Resize(mut new_bounds) => {
+ trace!("Resizing: new_bounds={new_bounds:?}");
new_bounds.bounds.size.height =
cmp::max(new_bounds.line_height, new_bounds.height());
new_bounds.bounds.size.width = cmp::max(new_bounds.cell_width, new_bounds.width());
@@ -876,6 +878,7 @@ impl Terminal {
term.resize(new_bounds);
}
InternalEvent::Clear => {
+ trace!("Clearing");
// Clear back buffer
term.clear_screen(ClearMode::Saved);
@@ -908,6 +911,7 @@ impl Terminal {
cx.emit(Event::Wakeup);
}
InternalEvent::Scroll(scroll) => {
+ trace!("Scrolling: scroll={scroll:?}");
term.scroll_display(*scroll);
self.refresh_hovered_word(window);
@@ -949,6 +953,7 @@ impl Terminal {
}
}
InternalEvent::SetSelection(selection) => {
+ trace!("Setting selection: selection={selection:?}");
term.selection = selection.as_ref().map(|(sel, _)| sel.clone());
#[cfg(any(target_os = "linux", target_os = "freebsd"))]
@@ -962,6 +967,7 @@ impl Terminal {
cx.emit(Event::SelectionsChanged)
}
InternalEvent::UpdateSelection(position) => {
+ trace!("Updating selection: position={position:?}");
if let Some(mut selection) = term.selection.take() {
let (point, side) = grid_point_and_side(
*position,
@@ -983,6 +989,7 @@ impl Terminal {
}
InternalEvent::Copy(keep_selection) => {
+ trace!("Copying selection: keep_selection={keep_selection:?}");
if let Some(txt) = term.selection_to_string() {
cx.write_to_clipboard(ClipboardItem::new_string(txt));
if !keep_selection.unwrap_or_else(|| {
@@ -994,21 +1001,26 @@ impl Terminal {
}
}
InternalEvent::ScrollToAlacPoint(point) => {
+ trace!("Scrolling to point: point={point:?}");
term.scroll_to_point(*point);
self.refresh_hovered_word(window);
}
InternalEvent::MoveViCursorToAlacPoint(point) => {
+ trace!("Move vi cursor to point: point={point:?}");
term.vi_goto_point(*point);
self.refresh_hovered_word(window);
}
InternalEvent::ToggleViMode => {
+ trace!("Toggling vi mode");
self.vi_mode_enabled = !self.vi_mode_enabled;
term.toggle_vi_mode();
}
InternalEvent::ViMotion(motion) => {
+ trace!("Performing vi motion: motion={motion:?}");
term.vi_motion(*motion);
}
InternalEvent::FindHyperlink(position, open) => {
+ trace!("Finding hyperlink at position: position={position:?}, open={open:?}");
let prev_hovered_word = self.last_content.last_hovered_word.take();
let point = grid_point(