@@ -342,23 +342,29 @@ impl EditorView {
342342 let selection_scope = theme
343343 .find_scope_index("ui.selection")
344344 .expect("could not find `ui.selection` scope in the theme!");
345+ let primary_selection_scope = theme
346+ .find_scope_index("ui.selection.primary")
347+ .unwrap_or(selection_scope);
345348 let base_cursor_scope = theme
346349 .find_scope_index("ui.cursor")
347350 .unwrap_or(selection_scope);
351+ let base_primary_cursor_scope = theme
352+ .find_scope_index("ui.cursor.primary")
353+ .unwrap_or(base_cursor_scope);
348354
349355 let cursor_scope = match mode {
350356 Mode::Insert => theme.find_scope_index("ui.cursor.insert"),
351357 Mode::Select => theme.find_scope_index("ui.cursor.select"),
352− Mode::Normal => Some(base_cursor_scope),
358+ Mode::Normal => theme.find_scope_index("ui.cursor.normal"),
353359 }
354360 .unwrap_or(base_cursor_scope);
355361
356− let primary_cursor_scope = theme
357− .find_scope_index("ui.cursor.primary")
358− .unwrap_or(cursor_scope);
359− let primary_selection_scope = theme
360− .find_scope_index("ui.selection.primary")
361− .unwrap_or(selection_scope);
362+ let primary_cursor_scope = match mode {
363+ Mode::Insert => theme.find_scope_index("ui.cursor.primary.insert"),
364+ Mode::Select => theme.find_scope_index("ui.cursor.primary.select"),
365+ Mode::Normal => theme.find_scope_index("ui.cursor.primary.normal"),
366+ }
367+ .unwrap_or(base_primary_cursor_scope);
362368
363369 let mut spans: Vec<(usize, std::ops::Range<usize>)> = Vec::new();
364370 for (i, range) in selection.iter().enumerate() {