Skip to content

Commit a57e5ed

Browse files
committed
Enable DISAMBIGUATE_ESCAPE_CODES if terminal supports it
1 parent 31064d7 commit a57e5ed

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

helix-term/src/application.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ use anyhow::{Context, Error};
4040
use crossterm::{
4141
event::{
4242
DisableBracketedPaste, DisableFocusChange, DisableMouseCapture, EnableBracketedPaste,
43-
EnableFocusChange, EnableMouseCapture, Event as CrosstermEvent,
43+
EnableFocusChange, EnableMouseCapture, Event as CrosstermEvent, KeyboardEnhancementFlags,
44+
PopKeyboardEnhancementFlags, PushKeyboardEnhancementFlags,
4445
},
4546
execute, terminal,
4647
tty::IsTty,
@@ -111,6 +112,9 @@ fn restore_term() -> Result<(), Error> {
111112
let mut stdout = stdout();
112113
// reset cursor shape
113114
write!(stdout, "\x1B[0 q")?;
115+
if matches!(terminal::supports_keyboard_enhancement(), Ok(true)) {
116+
execute!(stdout, PopKeyboardEnhancementFlags)?;
117+
}
114118
// Ignore errors on disabling, this might trigger on windows if we call
115119
// disable without calling enable previously
116120
let _ = execute!(stdout, DisableMouseCapture);
@@ -1013,6 +1017,14 @@ impl Application {
10131017
if self.config.load().editor.mouse {
10141018
execute!(stdout, EnableMouseCapture)?;
10151019
}
1020+
if matches!(terminal::supports_keyboard_enhancement(), Ok(true)) {
1021+
log::debug!("Enabling DISAMBIGUATE_ESCAPE_CODES within crossterm");
1022+
execute!(
1023+
stdout,
1024+
PushKeyboardEnhancementFlags(KeyboardEnhancementFlags::DISAMBIGUATE_ESCAPE_CODES)
1025+
)?;
1026+
}
1027+
10161028
Ok(())
10171029
}
10181030

0 commit comments

Comments
 (0)