Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-tui/src/backend/termina.rs')
-rw-r--r--helix-tui/src/backend/termina.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/helix-tui/src/backend/termina.rs b/helix-tui/src/backend/termina.rs
index 8c6844d9..f0beb848 100644
--- a/helix-tui/src/backend/termina.rs
+++ b/helix-tui/src/backend/termina.rs
@@ -1,6 +1,7 @@
use std::io::{self, Write as _};
use helix_view::{
+ editor::KittyKeyboardProtocolConfig,
graphics::{CursorKind, Rect, UnderlineStyle},
theme::{Color, Modifier},
};
@@ -147,6 +148,15 @@ impl TerminaBackend {
let mut capabilities = Capabilities::default();
let start = Instant::now();
+ capabilities.kitty_keyboard = match config.kitty_keyboard_protocol {
+ KittyKeyboardProtocolConfig::Disabled => KittyKeyboardSupport::None,
+ KittyKeyboardProtocolConfig::Enabled => KittyKeyboardSupport::Full,
+ KittyKeyboardProtocolConfig::Auto => {
+ write!(terminal, "{}", Csi::Keyboard(csi::Keyboard::QueryFlags))?;
+ KittyKeyboardSupport::None
+ }
+ };
+
// Many terminal extensions can be detected by querying the terminal for the state of the
// extension and then sending a request for the primary device attributes (which is
// consistently supported by all terminals). If we receive the status of the feature (for
@@ -154,9 +164,7 @@ impl TerminaBackend {
// If we only receive the device attributes then we know it is not.
write!(
terminal,
- "{}{}{}{}{}{}{}",
- // Kitty keyboard
- Csi::Keyboard(csi::Keyboard::QueryFlags),
+ "{}{}{}{}{}{}",
// Synchronized output
Csi::Mode(csi::Mode::QueryDecPrivateMode(csi::DecPrivateMode::Code(
csi::DecPrivateModeCode::SynchronizedOutput