aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan LEI2022-12-10 09:56:12 +0000
committerMichael Davis2022-12-17 19:59:05 +0000
commit24cd7f6adf7a46b8386583b17f01839eb592a2eb (patch)
treeefff4184b021c0a6aadd6fc347ee1ec53ce1b538
parent042d03269ecbe68e0461548bcf6918324c967bbb (diff)
Make prompt suggestions greyed out
-rw-r--r--book/src/themes.md1
-rw-r--r--helix-term/src/ui/prompt.rs19
2 files changed, 15 insertions, 5 deletions
diff --git a/book/src/themes.md b/book/src/themes.md
index 322caea5..0f94828e 100644
--- a/book/src/themes.md
+++ b/book/src/themes.md
@@ -268,6 +268,7 @@ These scopes are used for theming the editor interface.
| `ui.help` | Description box for commands |
| `ui.text` | Command prompts, popup text, etc. |
| `ui.text.focus` | |
+| `ui.text.inactive` | Same as `ui.text` but when the text is inactive (e.g. suggestions) |
| `ui.text.info` | The key: command text in `ui.popup.info` boxes |
| `ui.virtual.ruler` | Ruler columns (see the [`editor.rulers` config][editor-section]) |
| `ui.virtual.whitespace` | Visible whitespace characters |
diff --git a/helix-term/src/ui/prompt.rs b/helix-term/src/ui/prompt.rs
index b19b9a9f..5fb6745a 100644
--- a/helix-term/src/ui/prompt.rs
+++ b/helix-term/src/ui/prompt.rs
@@ -352,6 +352,7 @@ impl Prompt {
let prompt_color = theme.get("ui.text");
let completion_color = theme.get("ui.menu");
let selected_color = theme.get("ui.menu.selected");
+ let suggestion_color = theme.get("ui.text.inactive");
// completion
let max_len = self
@@ -450,21 +451,29 @@ impl Prompt {
// render buffer text
surface.set_string(area.x, area.y + line, &self.prompt, prompt_color);
- let input: Cow<str> = if self.line.is_empty() {
+ let (input, is_suggestion): (Cow<str>, bool) = if self.line.is_empty() {
// latest value in the register list
- self.history_register
+ match self
+ .history_register
.and_then(|reg| cx.editor.registers.last(reg))
.map(|entry| entry.into())
- .unwrap_or_else(|| Cow::from(""))
+ {
+ Some(value) => (value, true),
+ None => (Cow::from(""), false),
+ }
} else {
- self.line.as_str().into()
+ (self.line.as_str().into(), false)
};
surface.set_string(
area.x + self.prompt.len() as u16,
area.y + line,
&input,
- prompt_color,
+ if is_suggestion {
+ suggestion_color
+ } else {
+ prompt_color
+ },
);
}
}