From b8fd027d089e63c86d72682f6aa2b2e3de6edb4e Mon Sep 17 00:00:00 2001 From: Pierre POLLET Date: Wed, 11 Jun 2025 23:37:53 +0200 Subject: [PATCH] refactor: use crossterm `supports_keyboard_enhancement` once when KittyProtocolGuard is initialized --- src/engine.rs | 2 +- src/terminal_extensions/kitty.rs | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/engine.rs b/src/engine.rs index afdb5b2c..60ebac7c 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -237,7 +237,7 @@ impl Reedline { buffer_editor: None, cursor_shapes: None, bracketed_paste: BracketedPasteGuard::default(), - kitty_protocol: KittyProtocolGuard::default(), + kitty_protocol: KittyProtocolGuard::new(), #[cfg(feature = "external_printer")] external_printer: None, } diff --git a/src/terminal_extensions/kitty.rs b/src/terminal_extensions/kitty.rs index 65fb6e34..c26452fe 100644 --- a/src/terminal_extensions/kitty.rs +++ b/src/terminal_extensions/kitty.rs @@ -12,15 +12,23 @@ use crossterm::{event, execute}; /// * [dte text editor](https://gitlab.com/craigbarnes/dte/-/issues/138) /// /// Refer to if you're curious. -#[derive(Default)] pub(crate) struct KittyProtocolGuard { enabled: bool, active: bool, + support_kitty_protocol: bool, } impl KittyProtocolGuard { + pub fn new() -> Self { + Self { + support_kitty_protocol: super::kitty_protocol_available(), + enabled: false, + active: false, + } + } + pub fn set(&mut self, enable: bool) { - self.enabled = enable && super::kitty_protocol_available(); + self.enabled = enable && self.support_kitty_protocol; } pub fn enter(&mut self) { if self.enabled && !self.active {