From 3606d8bd247c27067b987a11f20cba236d02dcaa Mon Sep 17 00:00:00 2001 From: wojciechkepka Date: Wed, 23 Jun 2021 08:31:53 +0200 Subject: [PATCH] Patch the primary cursor with insert and select styles --- helix-term/src/ui/editor.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs index dd796580..c4322de0 100644 --- a/helix-term/src/ui/editor.rs +++ b/helix-term/src/ui/editor.rs @@ -282,16 +282,28 @@ pub fn render_buffer( Range::new(start, end) }; + let mode = doc.mode(); let base_cursor_style = theme .try_get("ui.cursor") .unwrap_or_else(|| Style::default().add_modifier(Modifier::REVERSED)); - let cursor_style = match doc.mode() { + let cursor_style = match mode { Mode::Insert => theme.try_get("ui.cursor.insert"), Mode::Select => theme.try_get("ui.cursor.select"), Mode::Normal => Some(base_cursor_style), } .unwrap_or(base_cursor_style); - let primary_cursor_style = theme.try_get("ui.cursor.primary").unwrap_or(cursor_style); + let primary_cursor_style = theme + .try_get("ui.cursor.primary") + .map(|style| { + if mode != Mode::Normal { + // we want to make sure that the insert and select highlights + // also affect the primary cursor if set + style.patch(cursor_style) + } else { + style + } + }) + .unwrap_or(cursor_style); let selection_style = theme.get("ui.selection"); let primary_selection_style = theme