on master help sign in
Avoid repeatedly loading config
commita640ab6b1f8aa3d968712acdd085feb48d81feb7 authorBlaž Hrastnik <blaz@mxxn.io> dateSat 19 Nov 2022, 15:41 (4 years ago) parent8be2d1d
2 files changed+13−17
helix-term/src/ui/editor.rs+5−12 helix-term/src/ui/statusline.rs+8−5
helix-term/src/ui/editor.rs+5−12
@@ -82,6 +82,7 @@ impl EditorView {
8282 let inner = view.inner_area(doc);
8383 let area = view.area;
8484 let theme = &editor.theme;
85+ let config = editor.config();
8586
8687 // DAP: Highlight current stack frame position
8788 let stack_frame = editor.debugger.as_ref().and_then(|debugger| {
@@ -117,10 +118,10 @@ impl EditorView {
117118 }
118119 }
119120
120− if is_focused && editor.config().cursorline {
121+ if is_focused && config.cursorline {
121122 Self::highlight_cursorline(doc, view, surface, theme);
122123 }
123− if is_focused && editor.config().cursorcolumn {
124+ if is_focused && config.cursorcolumn {
124125 Self::highlight_cursorcolumn(doc, view, surface, theme);
125126 }
126127
@@ -141,22 +142,14 @@ impl EditorView {
141142 doc,
142143 view,
143144 theme,
144− &editor.config().cursor_shape,
145+ &config.cursor_shape,
145146 ),
146147 ))
147148 } else {
148149 Box::new(highlights)
149150 };
150151
151− Self::render_text_highlights(
152− doc,
153− view.offset,
154− inner,
155− surface,
156− theme,
157− highlights,
158− &editor.config(),
159− );
152+ Self::render_text_highlights(doc, view.offset, inner, surface, theme, highlights, &config);
160153 Self::render_gutter(editor, doc, view, view.area, surface, theme, is_focused);
161154 Self::render_rulers(editor, doc, view, inner, surface, theme);
162155
helix-term/src/ui/statusline.rs+8−5
@@ -69,7 +69,9 @@ pub fn render(context: &mut RenderContext, viewport: Rect, surface: &mut Surface
6969
7070 // Left side of the status line.
7171
72− let element_ids = &context.editor.config().statusline.left;
72+ let config = context.editor.config();
73+
74+ let element_ids = &config.statusline.left;
7375 element_ids
7476 .iter()
7577 .map(|element_id| get_render_function(*element_id))
@@ -84,7 +86,7 @@ pub fn render(context: &mut RenderContext, viewport: Rect, surface: &mut Surface
8486
8587 // Right side of the status line.
8688
87− let element_ids = &context.editor.config().statusline.right;
89+ let element_ids = &config.statusline.right;
8890 element_ids
8991 .iter()
9092 .map(|element_id| get_render_function(*element_id))
@@ -102,7 +104,7 @@ pub fn render(context: &mut RenderContext, viewport: Rect, surface: &mut Surface
102104
103105 // Center of the status line.
104106
105− let element_ids = &context.editor.config().statusline.center;
107+ let element_ids = &config.statusline.center;
106108 element_ids
107109 .iter()
108110 .map(|element_id| get_render_function(*element_id))
@@ -160,7 +162,8 @@ where
160162 F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
161163{
162164 let visible = context.focused;
163− let modenames = &context.editor.config().statusline.mode;
165+ let config = context.editor.config();
166+ let modenames = &config.statusline.mode;
164167 write(
165168 context,
166169 format!(
@@ -176,7 +179,7 @@ where
176179 " "
177180 }
178181 ),
179− if visible && context.editor.config().color_modes {
182+ if visible && config.color_modes {
180183 match context.editor.mode() {
181184 Mode::Insert => Some(context.editor.theme.get("ui.statusline.insert")),
182185 Mode::Select => Some(context.editor.theme.get("ui.statusline.select")),