diff options
Diffstat (limited to 'helix-term')
-rw-r--r-- | helix-term/src/ui/editor.rs | 16 |
1 files 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 @@ impl EditorView { 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 |