зеркало из
https://github.com/glebtv/tui-textarea.git
synced 2026-09-04 14:55:51 +03:00
directly implement Widget for &TextArea (fix #78)
Этот коммит содержится в:
@@ -188,13 +188,12 @@ impl<'a> Editor<'a> {
|
||||
let chunks = layout.split(f.size());
|
||||
|
||||
if search_height > 0 {
|
||||
f.render_widget(self.search.textarea.widget(), chunks[0]);
|
||||
f.render_widget(&self.search.textarea, chunks[0]);
|
||||
}
|
||||
|
||||
let buffer = &self.buffers[self.current];
|
||||
let textarea = &buffer.textarea;
|
||||
let widget = textarea.widget();
|
||||
f.render_widget(widget, chunks[1]);
|
||||
f.render_widget(&textarea, chunks[1]);
|
||||
|
||||
// Render status line
|
||||
let modified = if buffer.modified { " [modified]" } else { "" };
|
||||
|
||||
@@ -26,7 +26,7 @@ fn main() -> io::Result<()> {
|
||||
|
||||
loop {
|
||||
term.draw(|f| {
|
||||
f.render_widget(textarea.widget(), f.size());
|
||||
f.render_widget(&textarea, f.size());
|
||||
})?;
|
||||
match crossterm::event::read()?.into() {
|
||||
Input { key: Key::Esc, .. } => break,
|
||||
|
||||
@@ -31,8 +31,7 @@ fn main() -> io::Result<()> {
|
||||
loop {
|
||||
term.draw(|f| {
|
||||
let chunks = layout.split(f.size());
|
||||
let widget = textarea.widget();
|
||||
f.render_widget(widget, chunks[0]);
|
||||
f.render_widget(&textarea, chunks[0]);
|
||||
})?;
|
||||
|
||||
match crossterm::event::read()?.into() {
|
||||
|
||||
@@ -38,7 +38,7 @@ fn main() -> io::Result<()> {
|
||||
textarea.set_placeholder_text("prompt message");
|
||||
loop {
|
||||
term.draw(|f| {
|
||||
f.render_widget(textarea.widget(), area);
|
||||
f.render_widget(&textarea, area);
|
||||
})?;
|
||||
match crossterm::event::read()?.into() {
|
||||
Input { key: Key::Esc, .. } => break,
|
||||
|
||||
@@ -50,8 +50,7 @@ fn main() -> io::Result<()> {
|
||||
loop {
|
||||
term.draw(|f| {
|
||||
let chunks = layout.split(f.size());
|
||||
let widget = textarea.widget();
|
||||
f.render_widget(widget, chunks[0]);
|
||||
f.render_widget(&textarea, chunks[0]);
|
||||
})?;
|
||||
|
||||
match crossterm::event::read()?.into() {
|
||||
|
||||
@@ -54,8 +54,7 @@ fn main() -> io::Result<()> {
|
||||
term.draw(|f| {
|
||||
let chunks = layout.split(f.size());
|
||||
for (textarea, chunk) in textarea.iter().zip(chunks.iter()) {
|
||||
let widget = textarea.widget();
|
||||
f.render_widget(widget, *chunk);
|
||||
f.render_widget(textarea, *chunk);
|
||||
}
|
||||
})?;
|
||||
match crossterm::event::read()?.into() {
|
||||
|
||||
@@ -57,8 +57,7 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||
Event::Tick => {}
|
||||
}
|
||||
term.draw(|f| {
|
||||
let widget = textarea.widget();
|
||||
f.render_widget(widget, f.size());
|
||||
f.render_widget(&textarea, f.size());
|
||||
})?;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,8 +22,7 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||
// The event loop
|
||||
loop {
|
||||
term.draw(|f| {
|
||||
let widget = textarea.widget();
|
||||
f.render_widget(widget, f.size());
|
||||
f.render_widget(&textarea, f.size());
|
||||
})?;
|
||||
|
||||
if let Some(input) = term
|
||||
|
||||
@@ -190,13 +190,12 @@ impl<'a> Editor<'a> {
|
||||
let chunks = layout.split(f.size());
|
||||
|
||||
if search_height > 0 {
|
||||
f.render_widget(self.search.textarea.widget(), chunks[0]);
|
||||
f.render_widget(&self.search.textarea, chunks[0]);
|
||||
}
|
||||
|
||||
let buffer = &self.buffers[self.current];
|
||||
let textarea = &buffer.textarea;
|
||||
let widget = textarea.widget();
|
||||
f.render_widget(widget, chunks[1]);
|
||||
f.render_widget(&textarea, chunks[1]);
|
||||
|
||||
// Render status line
|
||||
let modified = if buffer.modified { " [modified]" } else { "" };
|
||||
|
||||
@@ -28,7 +28,7 @@ fn main() -> io::Result<()> {
|
||||
|
||||
loop {
|
||||
term.draw(|f| {
|
||||
f.render_widget(textarea.widget(), f.size());
|
||||
f.render_widget(&textarea, f.size());
|
||||
})?;
|
||||
match crossterm::event::read()?.into() {
|
||||
Input { key: Key::Esc, .. } => break,
|
||||
|
||||
@@ -57,8 +57,7 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||
Event::Tick => {}
|
||||
}
|
||||
term.draw(|f| {
|
||||
let widget = textarea.widget();
|
||||
f.render_widget(widget, f.size());
|
||||
f.render_widget(&textarea, f.size());
|
||||
})?;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ fn main() -> io::Result<()> {
|
||||
.direction(Direction::Vertical)
|
||||
.constraints([Constraint::Length(height), Constraint::Min(0)])
|
||||
.split(f.size());
|
||||
f.render_widget(textarea.widget(), chunks[0]);
|
||||
f.render_widget(&textarea, chunks[0]);
|
||||
})?;
|
||||
match crossterm::event::read()?.into() {
|
||||
Input { key: Key::Esc, .. } => break,
|
||||
|
||||
@@ -419,7 +419,7 @@ fn main() -> io::Result<()> {
|
||||
let mut vim = Vim::new(Mode::Normal);
|
||||
|
||||
loop {
|
||||
term.draw(|f| f.render_widget(textarea.widget(), f.size()))?;
|
||||
term.draw(|f| f.render_widget(&textarea, f.size()))?;
|
||||
|
||||
vim = match vim.transition(crossterm::event::read()?.into(), &mut textarea) {
|
||||
Transition::Mode(mode) if vim.mode != mode => {
|
||||
|
||||
Ссылка в новой задаче
Block a user