diff options
author | wojciechkepka | 2021-06-23 06:31:53 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2021-06-23 12:55:02 +0000 |
commit | 3606d8bd247c27067b987a11f20cba236d02dcaa (patch) | |
tree | a61a475a405cef597c03866a1e72ebfbbb4c5c64 | |
parent | c534fdefdcbde42c99db4b23e70d69405e93aaf0 (diff) |
Patch the primary cursor with insert and select styles
-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 |