aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwojciechkepka2021-06-23 06:31:53 +0000
committerBlaž Hrastnik2021-06-23 12:55:02 +0000
commit3606d8bd247c27067b987a11f20cba236d02dcaa (patch)
treea61a475a405cef597c03866a1e72ebfbbb4c5c64
parentc534fdefdcbde42c99db4b23e70d69405e93aaf0 (diff)
Patch the primary cursor with insert and select styles
-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