diff options
author | Jonathan LEI | 2022-12-10 09:56:12 +0000 |
---|---|---|
committer | Michael Davis | 2022-12-17 19:59:05 +0000 |
commit | 24cd7f6adf7a46b8386583b17f01839eb592a2eb (patch) | |
tree | efff4184b021c0a6aadd6fc347ee1ec53ce1b538 | |
parent | 042d03269ecbe68e0461548bcf6918324c967bbb (diff) |
Make prompt suggestions greyed out
-rw-r--r-- | book/src/themes.md | 1 | ||||
-rw-r--r-- | helix-term/src/ui/prompt.rs | 19 |
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 + }, ); } } |