From 08caec05d640779f7ce68d8625eb7801ee21e5a5 Mon Sep 17 00:00:00 2001 From: rhysd Date: Sat, 18 Jun 2022 19:17:19 +0900 Subject: [PATCH] render cursor position in editor example --- examples/editor.rs | 31 +++++++++++++++++++++---------- examples/multi.rs | 2 ++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/examples/editor.rs b/examples/editor.rs index 91541ec..3646e0c 100644 --- a/examples/editor.rs +++ b/examples/editor.rs @@ -121,18 +121,29 @@ impl<'a> Editor<'a> { let widget = textarea.widget(); f.render_widget(widget, chunks[0]); + // Render status line let modified = if buffer.modified { " [modified]" } else { "" }; - let status = format!( - "[{}/{}] {:?}{}", - self.current + 1, - self.buffers.len(), - buffer.path, - modified, - ); - let status = - Paragraph::new(status).style(Style::default().add_modifier(Modifier::REVERSED)); - f.render_widget(status, chunks[1]); + let slot = format!("[{}/{}]", self.current + 1, self.buffers.len()); + let path = format!(" {}{} ", buffer.path.display(), modified); + let (row, col) = textarea.cursor(); + let cursor = format!("({},{})", row + 1, col + 1); + let status_chunks = Layout::default() + .direction(Direction::Horizontal) + .constraints( + [ + Constraint::Length(slot.len() as u16), + Constraint::Min(1), + Constraint::Length(cursor.len() as u16), + ] + .as_ref(), + ) + .split(chunks[1]); + let status_style = Style::default().add_modifier(Modifier::REVERSED); + f.render_widget(Paragraph::new(slot).style(status_style), status_chunks[0]); + f.render_widget(Paragraph::new(path).style(status_style), status_chunks[1]); + f.render_widget(Paragraph::new(cursor).style(status_style), status_chunks[2]); + // Render message at bottom let message = if let Some(message) = self.message.take() { Spans::from(Span::raw(message)) } else { diff --git a/examples/multi.rs b/examples/multi.rs index c154e6c..0400b13 100644 --- a/examples/multi.rs +++ b/examples/multi.rs @@ -84,5 +84,7 @@ fn main() -> io::Result<()> { )?; term.show_cursor()?; + println!("Left textarea: {:?}", textarea[0].lines()); + println!("Right textarea: {:?}", textarea[1].lines()); Ok(()) }