@@ -282,16 +282,28 @@ impl EditorView {
282282 Range::new(start, end)
283283 };
284284
285+ let mode = doc.mode();
285286 let base_cursor_style = theme
286287 .try_get("ui.cursor")
287288 .unwrap_or_else(|| Style::default().add_modifier(Modifier::REVERSED));
288− let cursor_style = match doc.mode() {
289+ let cursor_style = match mode {
289290 Mode::Insert => theme.try_get("ui.cursor.insert"),
290291 Mode::Select => theme.try_get("ui.cursor.select"),
291292 Mode::Normal => Some(base_cursor_style),
292293 }
293294 .unwrap_or(base_cursor_style);
294− let primary_cursor_style = theme.try_get("ui.cursor.primary").unwrap_or(cursor_style);
295+ let primary_cursor_style = theme
296+ .try_get("ui.cursor.primary")
297+ .map(|style| {
298+ if mode != Mode::Normal {
299+ // we want to make sure that the insert and select highlights
300+ // also affect the primary cursor if set
301+ style.patch(cursor_style)
302+ } else {
303+ style
304+ }
305+ })
306+ .unwrap_or(cursor_style);
295307
296308 let selection_style = theme.get("ui.selection");
297309 let primary_selection_style = theme