From 06502e5a2e18eeb0e6c4828b6cda0d4ba81cdbab Mon Sep 17 00:00:00 2001 From: Jan Hrastnik Date: Mon, 19 Oct 2020 19:39:35 +0200 Subject: added prompt close --- helix-term/src/application.rs | 38 ++++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'helix-term/src/application.rs') diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs index 87d03c72..8972f082 100644 --- a/helix-term/src/application.rs +++ b/helix-term/src/application.rs @@ -235,7 +235,14 @@ impl Renderer { .set_string(1, self.size.1 - 2, mode, self.text_color); } - pub fn render_prompt(&mut self, prompt: &Prompt) { + pub fn render_prompt(&mut self, view: &View, prompt: &Prompt) { + // completion + if prompt.completion.is_some() { + self.surface.set_style( + Rect::new(0, self.size.1 - 6, self.size.0, 4), + view.theme.get("ui.statusline"), + ); + } // render buffer text self.surface .set_string(1, self.size.1 - 1, &prompt.prompt, self.text_color); @@ -309,10 +316,13 @@ impl Application { if let Some(view) = &mut self.editor.view { self.terminal.render_view(view, viewport); - } - - if let Some(prompt) = &self.prompt { - self.terminal.render_prompt(prompt); + if let Some(prompt) = &self.prompt { + if prompt.should_close { + self.prompt = None; + } else { + self.terminal.render_prompt(view, prompt); + } + } } self.terminal.draw(); @@ -383,7 +393,23 @@ impl Application { { let prompt = Prompt::new( ":".to_owned(), - |_input: &str| None, // completion + |_input: &str| { + let placeholder_list = vec![ + String::from("aaa"), + String::from("bbb"), + String::from("ccc"), + ]; + let mut matches = vec![]; + for command in placeholder_list { + if command.contains(_input) { + matches.push(command); + } + } + if matches.len() != 0 { + return Some(matches); + } + None + }, // completion |editor: &mut Editor, input: &str| match input { "q" => editor.should_close = true, _ => (), -- cgit v1.2.3-70-g09d2