aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBlaž Hrastnik2021-08-20 01:58:44 +0000
committerBlaž Hrastnik2021-08-20 01:58:44 +0000
commit68626b8f7844381c7fdfc8ddeffcbe5e84f1db04 (patch)
tree7793b585b20a83aa57212c3cd8c4e6af2cd7139d
parentcbd39d67a419aa0442af6d81b5b41ad518dc5fff (diff)
ui: Refactor styling a bit, ensure infobox is stylable
-rw-r--r--helix-term/src/ui/info.rs11
-rw-r--r--helix-term/src/ui/prompt.rs11
-rw-r--r--theme.toml2
3 files changed, 13 insertions, 11 deletions
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,
);
}
}
diff --git a/theme.toml b/theme.toml
index 4df02667..b66ac499 100644
--- a/theme.toml
+++ b/theme.toml
@@ -42,7 +42,7 @@ module = "#ff0000"
"ui.help" = { bg = "#7958DC", fg = "#171452" }
"ui.text" = { fg = "lavender" }
-"ui.text.focus" = { fg = "lilac" }
+"ui.text.focus" = { fg = "white" }
"ui.selection" = { bg = "#540099" }
"ui.selection.primary" = { bg = "#540099" }