From 86bd8dd6efc415481d74518f08c40bb85ab59283 Mon Sep 17 00:00:00 2001 From: rhysd Date: Fri, 8 Jul 2022 10:22:54 +0900 Subject: [PATCH] report pattern error in title of search box in editor example --- examples/editor.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/examples/editor.rs b/examples/editor.rs index 61f66b8..6fd4d7d 100644 --- a/examples/editor.rs +++ b/examples/editor.rs @@ -5,6 +5,7 @@ use crossterm::terminal::{ }; use std::borrow::Cow; use std::env; +use std::fmt::Display; use std::fs; use std::io; use std::io::{BufRead, Write}; @@ -76,6 +77,18 @@ impl<'a> SearchBox<'a> { } } } + + fn set_error(&mut self, err: Option) { + let b = if let Some(err) = err { + Block::default() + .borders(Borders::ALL) + .title(format!("Search: {}", err)) + .style(Style::default().fg(Color::Red)) + } else { + Block::default().borders(Borders::ALL).title("Search") + }; + self.textarea.set_block(b); + } } struct Buffer<'a> { @@ -283,10 +296,8 @@ impl<'a> Editor<'a> { } input => { if let Some(query) = self.search.input(input) { - if let Err(err) = textarea.set_search_pattern(query) { - self.message = - Some(format!("Invalid search pattern: {}", err).into()); - } + let maybe_err = textarea.set_search_pattern(query).err(); + self.search.set_error(maybe_err); } } }