aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src/ui
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term/src/ui')
-rw-r--r--helix-term/src/ui/editor.rs16
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