From acc1950ab4b40529e31f5911083a603de16e1075 Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Sat, 3 Sep 2022 19:59:56 -0700 Subject: [PATCH 1/3] Fixed tiny resize bug --- crates/terminal/src/terminal.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/crates/terminal/src/terminal.rs b/crates/terminal/src/terminal.rs index 633edb5ff689c799630bb526c5e7d2195cc33aa1..4689e1e0f5b35fc9a7c65832839d811e84018fe4 100644 --- a/crates/terminal/src/terminal.rs +++ b/crates/terminal/src/terminal.rs @@ -572,12 +572,15 @@ impl Terminal { }); self.write_to_pty(format(color)) } - InternalEvent::Resize(new_size) => { - self.cur_size = *new_size; + InternalEvent::Resize(mut new_size) => { + new_size.height = f32::max(new_size.line_height, new_size.height); + new_size.width = f32::max(new_size.cell_width, new_size.width); - self.pty_tx.0.send(Msg::Resize((*new_size).into())).ok(); + self.cur_size = new_size.clone(); - term.resize(*new_size); + self.pty_tx.0.send(Msg::Resize((new_size).into())).ok(); + + term.resize(new_size); } InternalEvent::Clear => { self.write_to_pty("\x0c".to_string()); From 68cf91de327957354bbfd7572eec53fc45d5de88 Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Sat, 3 Sep 2022 20:52:40 -0700 Subject: [PATCH 2/3] Problem with alacritty's handling of selections when the terminal resizes --- Cargo.lock | 26 +++++++++++++------ crates/terminal/Cargo.toml | 2 +- crates/terminal/src/terminal.rs | 9 ++++++- .../terminal/src/terminal_container_view.rs | 1 + crates/terminal/src/terminal_element.rs | 4 +-- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0a5d85d3b3b2af8d49278b21270a8609605b62fa..8528935898bfc3cce2070bfa42953205af5516b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,10 +59,20 @@ dependencies = [ "memchr", ] +[[package]] +name = "alacritty_config" +version = "0.1.1-dev" +source = "git+https://github.com/zed-industries/alacritty?rev=a51dbe25d67e84d6ed4261e640d3954fbdd9be45#a51dbe25d67e84d6ed4261e640d3954fbdd9be45" +dependencies = [ + "log", + "serde", + "serde_yaml", +] + [[package]] name = "alacritty_config_derive" -version = "0.1.0" -source = "git+https://github.com/zed-industries/alacritty?rev=4e1f0c6177975a040b37f942dfb0e723e46a9971#4e1f0c6177975a040b37f942dfb0e723e46a9971" +version = "0.2.1-dev" +source = "git+https://github.com/zed-industries/alacritty?rev=a51dbe25d67e84d6ed4261e640d3954fbdd9be45#a51dbe25d67e84d6ed4261e640d3954fbdd9be45" dependencies = [ "proc-macro2", "quote", @@ -71,9 +81,10 @@ dependencies = [ [[package]] name = "alacritty_terminal" -version = "0.17.0-dev" -source = "git+https://github.com/zed-industries/alacritty?rev=4e1f0c6177975a040b37f942dfb0e723e46a9971#4e1f0c6177975a040b37f942dfb0e723e46a9971" +version = "0.17.1-dev" +source = "git+https://github.com/zed-industries/alacritty?rev=a51dbe25d67e84d6ed4261e640d3954fbdd9be45#a51dbe25d67e84d6ed4261e640d3954fbdd9be45" dependencies = [ + "alacritty_config", "alacritty_config_derive", "base64", "bitflags", @@ -85,7 +96,7 @@ dependencies = [ "mio-extras", "miow 0.3.7", "nix", - "parking_lot 0.11.2", + "parking_lot 0.12.1", "regex-automata", "serde", "serde_yaml", @@ -3230,12 +3241,11 @@ dependencies = [ [[package]] name = "nix" -version = "0.22.3" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" +checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" dependencies = [ "bitflags", - "cc", "cfg-if 1.0.0", "libc", "memoffset", diff --git a/crates/terminal/Cargo.toml b/crates/terminal/Cargo.toml index 5910a2897ca5df9e73c21ee035aa605141978e59..c69ad1f40be89812ab089a20a405988f1bbe0913 100644 --- a/crates/terminal/Cargo.toml +++ b/crates/terminal/Cargo.toml @@ -8,7 +8,7 @@ path = "src/terminal.rs" doctest = false [dependencies] -alacritty_terminal = { git = "https://github.com/zed-industries/alacritty", rev = "4e1f0c6177975a040b37f942dfb0e723e46a9971" } +alacritty_terminal = { git = "https://github.com/zed-industries/alacritty", rev = "a51dbe25d67e84d6ed4261e640d3954fbdd9be45" } procinfo = { git = "https://github.com/zed-industries/wezterm", rev = "40a7dbf93542fbe4178c2e4b4bd438126a6432b9", default-features = false } editor = { path = "../editor" } util = { path = "../util" } diff --git a/crates/terminal/src/terminal.rs b/crates/terminal/src/terminal.rs index 4689e1e0f5b35fc9a7c65832839d811e84018fe4..85a6fef7b6239b3c7583f5aed398533806cc3fdc 100644 --- a/crates/terminal/src/terminal.rs +++ b/crates/terminal/src/terminal.rs @@ -272,6 +272,7 @@ impl TerminalBuilder { initial_size: TerminalSize, blink_settings: Option, alternate_scroll: &AlternateScroll, + window_id: usize, ) -> Result { let pty_config = { let alac_shell = shell.clone().and_then(|shell| match shell { @@ -323,7 +324,7 @@ impl TerminalBuilder { let term = Arc::new(FairMutex::new(term)); //Setup the pty... - let pty = match tty::new(&pty_config, initial_size.into(), None) { + let pty = match tty::new(&pty_config, initial_size.into(), window_id as u64) { Ok(pty) => pty, Err(error) => { bail!(TerminalError { @@ -580,6 +581,12 @@ impl Terminal { self.pty_tx.0.send(Msg::Resize((new_size).into())).ok(); + // When this resize happens + // We go from 737px -> 703px height + // This means there is 1 less line + // that means the delta is 1 + // That means the selection is rotated by -1 + term.resize(new_size); } InternalEvent::Clear => { diff --git a/crates/terminal/src/terminal_container_view.rs b/crates/terminal/src/terminal_container_view.rs index 5a1d27fb7a8679c5bad2e7a2d3fe9233e1d08f0a..baba4879804d46f968726d84bf32dabb601cdca0 100644 --- a/crates/terminal/src/terminal_container_view.rs +++ b/crates/terminal/src/terminal_container_view.rs @@ -114,6 +114,7 @@ impl TerminalContainer { size_info, settings.terminal_overrides.blinking.clone(), scroll, + cx.window_id(), ) { Ok(terminal) => { let terminal = cx.add_model(|cx| terminal.subscribe(cx)); diff --git a/crates/terminal/src/terminal_element.rs b/crates/terminal/src/terminal_element.rs index 6c6d95aacd86543c4c039e5a63b9c31b3570b570..d88511cbce408acf9b14a34fc98b218193f8b75d 100644 --- a/crates/terminal/src/terminal_element.rs +++ b/crates/terminal/src/terminal_element.rs @@ -827,9 +827,9 @@ fn to_highlighted_range_lines( origin: Vector2F, ) -> Option<(f32, Vec)> { // Step 1. Normalize the points to be viewport relative. - //When display_offset = 1, here's how the grid is arranged: - //--- Viewport top + // When display_offset = 1, here's how the grid is arranged: //-2,0 -2,1... + //--- Viewport top //-1,0 -1,1... //--------- Terminal Top // 0,0 0,1... From 6e6f37a84f5943359ead9419588d424638516ab2 Mon Sep 17 00:00:00 2001 From: Mikayla Maki Date: Tue, 6 Sep 2022 10:33:40 -0700 Subject: [PATCH 3/3] updated wez term dependency --- Cargo.lock | 2 +- crates/terminal/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8528935898bfc3cce2070bfa42953205af5516b2..14476e1b04eb22057e4b943b21b63632cb88f628 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3834,7 +3834,7 @@ dependencies = [ [[package]] name = "procinfo" version = "0.1.0" -source = "git+https://github.com/zed-industries/wezterm?rev=40a7dbf93542fbe4178c2e4b4bd438126a6432b9#40a7dbf93542fbe4178c2e4b4bd438126a6432b9" +source = "git+https://github.com/zed-industries/wezterm?rev=5cd757e5f2eb039ed0c6bb6512223e69d5efc64d#5cd757e5f2eb039ed0c6bb6512223e69d5efc64d" dependencies = [ "libc", "log", diff --git a/crates/terminal/Cargo.toml b/crates/terminal/Cargo.toml index c69ad1f40be89812ab089a20a405988f1bbe0913..7831be1c5af47f1dd9e80bac7f5be5d070e21e51 100644 --- a/crates/terminal/Cargo.toml +++ b/crates/terminal/Cargo.toml @@ -9,7 +9,7 @@ doctest = false [dependencies] alacritty_terminal = { git = "https://github.com/zed-industries/alacritty", rev = "a51dbe25d67e84d6ed4261e640d3954fbdd9be45" } -procinfo = { git = "https://github.com/zed-industries/wezterm", rev = "40a7dbf93542fbe4178c2e4b4bd438126a6432b9", default-features = false } +procinfo = { git = "https://github.com/zed-industries/wezterm", rev = "5cd757e5f2eb039ed0c6bb6512223e69d5efc64d", default-features = false } editor = { path = "../editor" } util = { path = "../util" } gpui = { path = "../gpui" }