From 4d2282cbccff4dd0aaa901a3ea4fb28a2b8120aa Mon Sep 17 00:00:00 2001 From: Khang Nguyen Duy <40488299+iceghost@users.noreply.github.com> Date: Tue, 19 Mar 2024 18:12:37 +0700 Subject: [PATCH] Respect undercurl config even with no terminfo (#9897) I have just found out that my recent Windows Terminal version supported rendering undercurl (see https://devblogs.microsoft.com/commandline/windows-terminal-preview-1-20-release ). However, looking at the source, terminfo is required for helix to emit the undercurl control code, which isn't available on Windows AFAIK. This commit make helix respects the `editor.undercurl` option when there is no terminfo. Tested on Windows Terminal Preview 1.20 Signed-off-by: Khang Nguyen --- helix-tui/src/backend/crossterm.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/helix-tui/src/backend/crossterm.rs b/helix-tui/src/backend/crossterm.rs index 88e70f32..37721e89 100644 --- a/helix-tui/src/backend/crossterm.rs +++ b/helix-tui/src/backend/crossterm.rs @@ -52,10 +52,14 @@ impl Default for Capabilities { impl Capabilities { /// Detect capabilities from the terminfo database located based /// on the $TERM environment variable. If detection fails, returns - /// a default value where no capability is supported. + /// a default value where no capability is supported, or just undercurl + /// if config.undercurl is set. pub fn from_env_or_default(config: &EditorConfig) -> Self { match termini::TermInfo::from_env() { - Err(_) => Capabilities::default(), + Err(_) => Capabilities { + has_extended_underlines: config.undercurl, + ..Capabilities::default() + }, Ok(t) => Capabilities { // Smulx, VTE: https://unix.stackexchange.com/a/696253/246284 // Su (used by kitty): https://sw.kovidgoyal.net/kitty/underlines