@@ -161,7 +161,7 @@ impl EditorView {
161161 .area
162162 .clip_top(view.area.height.saturating_sub(1))
163163 .clip_bottom(1); // -1 from bottom to remove commandline
164− self.render_statusline(doc, view, statusline_area, surface, theme, is_focused);
164+ self.render_statusline(editor, doc, view, statusline_area, surface, is_focused);
165165 }
166166
167167 pub fn render_rulers(
@@ -732,11 +732,11 @@ impl EditorView {
732732
733733 pub fn render_statusline(
734734 &self,
735+ editor: &Editor,
735736 doc: &Document,
736737 view: &View,
737738 viewport: Rect,
738739 surface: &mut Surface,
739− theme: &Theme,
740740 is_focused: bool,
741741 ) {
742742 use tui::text::{Span, Spans};
@@ -745,10 +745,11 @@ impl EditorView {
745745 // Left side of the status line.
746746 //-------------------------------
747747
748− let mode = match doc.mode() {
749− Mode::Insert => "INS",
750− Mode::Select => "SEL",
751− Mode::Normal => "NOR",
748+ let theme = &editor.theme;
749+ let (mode, mode_style) = match doc.mode() {
750+ Mode::Insert => (" INS ", theme.get("ui.statusline.insert")),
751+ Mode::Select => (" SEL ", theme.get("ui.statusline.select")),
752+ Mode::Normal => (" NOR ", theme.get("ui.statusline.normal")),
752753 };
753754 let progress = doc
754755 .language_server()
@@ -767,7 +768,13 @@ impl EditorView {
767768 // statusline
768769 surface.set_style(viewport.with_height(1), base_style);
769770 if is_focused {
770− surface.set_string(viewport.x + 1, viewport.y, mode, base_style);
771+ let color_modes = editor.config().color_modes;
772+ surface.set_string(
773+ viewport.x,
774+ viewport.y,
775+ mode,
776+ if color_modes { mode_style } else { base_style },
777+ );
771778 }
772779 surface.set_string(viewport.x + 5, viewport.y, progress, base_style);
773780