1
0
зеркало из https://github.com/glebtv/tui-textarea.git synced 2026-09-07 16:05:50 +03:00

render cursor position in editor example

Этот коммит содержится в:
rhysd
2022-06-18 19:17:19 +09:00
родитель f10b5d52be
Коммит 08caec05d6
2 изменённых файлов: 23 добавлений и 10 удалений

Просмотреть файл

@@ -121,18 +121,29 @@ impl<'a> Editor<'a> {
let widget = textarea.widget(); let widget = textarea.widget();
f.render_widget(widget, chunks[0]); f.render_widget(widget, chunks[0]);
// Render status line
let modified = if buffer.modified { " [modified]" } else { "" }; let modified = if buffer.modified { " [modified]" } else { "" };
let status = format!( let slot = format!("[{}/{}]", self.current + 1, self.buffers.len());
"[{}/{}] {:?}{}", let path = format!(" {}{} ", buffer.path.display(), modified);
self.current + 1, let (row, col) = textarea.cursor();
self.buffers.len(), let cursor = format!("({},{})", row + 1, col + 1);
buffer.path, let status_chunks = Layout::default()
modified, .direction(Direction::Horizontal)
); .constraints(
let status = [
Paragraph::new(status).style(Style::default().add_modifier(Modifier::REVERSED)); Constraint::Length(slot.len() as u16),
f.render_widget(status, chunks[1]); 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() { let message = if let Some(message) = self.message.take() {
Spans::from(Span::raw(message)) Spans::from(Span::raw(message))
} else { } else {

Просмотреть файл

@@ -84,5 +84,7 @@ fn main() -> io::Result<()> {
)?; )?;
term.show_cursor()?; term.show_cursor()?;
println!("Left textarea: {:?}", textarea[0].lines());
println!("Right textarea: {:?}", textarea[1].lines());
Ok(()) Ok(())
} }