From 68626b8f7844381c7fdfc8ddeffcbe5e84f1db04 Mon Sep 17 00:00:00 2001 From: Blaž Hrastnik Date: Fri, 20 Aug 2021 10:58:44 +0900 Subject: ui: Refactor styling a bit, ensure infobox is stylable --- helix-term/src/ui/info.rs | 11 +++++++---- helix-term/src/ui/prompt.rs | 11 +++++------ 2 files changed, 12 insertions(+), 10 deletions(-) (limited to 'helix-term') diff --git a/helix-term/src/ui/info.rs b/helix-term/src/ui/info.rs index 0da0fe65..75d978da 100644 --- a/helix-term/src/ui/info.rs +++ b/helix-term/src/ui/info.rs @@ -6,7 +6,8 @@ use tui::widgets::{Block, Borders, Paragraph, Widget}; impl Component for Info { fn render(&mut self, viewport: Rect, surface: &mut Surface, cx: &mut Context) { - let style = cx.editor.theme.get("ui.popup"); + let text_style = cx.editor.theme.get("ui.text.focus"); + let popup_style = text_style.patch(cx.editor.theme.get("ui.popup")); // Calculate the area of the terminal to modify. Because we want to // render at the bottom right, we use the viewport's width and height @@ -19,12 +20,12 @@ impl Component for Info { width, height, )); - surface.clear_with(area, style); + surface.clear_with(area, popup_style); let block = Block::default() .title(self.title.as_str()) .borders(Borders::ALL) - .border_style(style); + .border_style(popup_style); let margin = Margin { vertical: 0, @@ -33,6 +34,8 @@ impl Component for Info { let inner = block.inner(area).inner(&margin); block.render(area, surface); - Paragraph::new(self.text.as_str()).render(inner, surface); + Paragraph::new(self.text.as_str()) + .style(text_style) + .render(inner, surface); } } diff --git a/helix-term/src/ui/prompt.rs b/helix-term/src/ui/prompt.rs index 8ec3674e..19986b5c 100644 --- a/helix-term/src/ui/prompt.rs +++ b/helix-term/src/ui/prompt.rs @@ -284,7 +284,8 @@ const BASE_WIDTH: u16 = 30; impl Prompt { pub fn render_prompt(&self, area: Rect, surface: &mut Surface, cx: &mut Context) { let theme = &cx.editor.theme; - let text_color = theme.get("ui.text.focus"); + let prompt_color = theme.get("ui.text"); + let completion_color = theme.get("ui.statusline"); let selected_color = theme.get("ui.menu.selected"); // completion @@ -326,15 +327,13 @@ impl Prompt { let mut row = 0; let mut col = 0; - // TODO: paginate for (i, (_range, completion)) in self.completion.iter().enumerate().skip(offset).take(items) { let color = if Some(i) == self.selection { - // Style::default().bg(Color::Rgb(104, 60, 232)) selected_color // TODO: just invert bg } else { - text_color + completion_color }; surface.set_stringn( area.x + col * (1 + col_width), @@ -377,12 +376,12 @@ impl Prompt { let line = area.height - 1; // render buffer text - surface.set_string(area.x, area.y + line, &self.prompt, text_color); + surface.set_string(area.x, area.y + line, &self.prompt, prompt_color); surface.set_string( area.x + self.prompt.len() as u16, area.y + line, &self.line, - text_color, + prompt_color, ); } } -- cgit v1.2.3-70-g09d2