chore: upgrade to Rust Edition 2024 (#1863)

https://doc.rust-lang.org/edition-guide/rust-2024/index.html

Fixes #1727
This commit is contained in:
Tyler Breisacher
2025-05-19 01:17:03 -07:00
committed by GitHub
parent 7cb35d4be1
commit dbfb2c3399
91 changed files with 317 additions and 251 deletions

58
Cargo.lock generated
View File

@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
version = 4
[[package]]
name = "addr2line"
@@ -224,9 +224,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.9.0"
version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
dependencies = [
"serde",
]
@@ -333,9 +333,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.2.22"
version = "1.2.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32db95edf998450acc7881c932f94cd9b05c87b4b2599e8bab064753da4acfd1"
checksum = "5f4ac86a9e5bc1e2b3449ab9d7d3a6a405e3d1bb28d7b9be8614f55846ae3766"
dependencies = [
"shlex",
]
@@ -674,7 +674,7 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.9.1",
"crossterm_winapi",
"derive_more",
"document-features",
@@ -900,9 +900,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "errno"
version = "0.3.11"
version = "0.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18"
dependencies = [
"libc",
"windows-sys 0.59.0",
@@ -1662,18 +1662,18 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.9.1",
"libc",
"redox_syscall",
]
[[package]]
name = "line-clipping"
version = "0.3.2"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ce9d1fb615cfbfabb113034d9fcd9e717f8f7ccbf5dde59af2bc2dd223f9d26"
checksum = "51a1679740111eb63b7b4cb3c97b1d5d9f82e142292a25edcfdb4120a48b3880"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.9.1",
]
[[package]]
@@ -1830,7 +1830,7 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.9.1",
"cfg-if",
"cfg_aliases",
"libc",
@@ -2012,9 +2012,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "owo-colors"
version = "4.2.0"
version = "4.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564"
checksum = "26995317201fa17f3656c36716aed4a7c81743a9634ac4c99c0eeda495db0cec"
[[package]]
name = "palette"
@@ -2531,7 +2531,7 @@ name = "ratatui-core"
version = "0.1.0-alpha.4"
dependencies = [
"anstyle",
"bitflags 2.9.0",
"bitflags 2.9.1",
"compact_str",
"document-features",
"hashbrown",
@@ -2598,7 +2598,7 @@ dependencies = [
name = "ratatui-widgets"
version = "0.3.0-alpha.3"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.9.1",
"color-eyre",
"crossterm",
"document-features",
@@ -2653,7 +2653,7 @@ version = "0.5.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.9.1",
]
[[package]]
@@ -2777,7 +2777,7 @@ version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.9.1",
"errno",
"libc",
"linux-raw-sys",
@@ -2891,7 +2891,7 @@ version = "3.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.9.1",
"core-foundation",
"core-foundation-sys",
"libc",
@@ -3279,7 +3279,7 @@ checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7"
dependencies = [
"anyhow",
"base64",
"bitflags 2.9.0",
"bitflags 2.9.1",
"fancy-regex",
"filedescriptor",
"finl_unicode",
@@ -3550,7 +3550,7 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fdb0c213ca27a9f57ab69ddb290fd80d970922355b83ae380b395d3986b8a2e"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.9.1",
"bytes",
"futures-util",
"http",
@@ -4053,9 +4053,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows-core"
version = "0.61.0"
version = "0.61.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980"
checksum = "46ec44dc15085cea82cf9c78f85a9114c463a369786585ad2882d1ff0b0acf40"
dependencies = [
"windows-implement",
"windows-interface",
@@ -4094,18 +4094,18 @@ checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38"
[[package]]
name = "windows-result"
version = "0.3.2"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252"
checksum = "4b895b5356fc36103d0f64dd1e94dfa7ac5633f1c9dd6e80fe9ec4adef69e09d"
dependencies = [
"windows-link",
]
[[package]]
name = "windows-strings"
version = "0.4.0"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97"
checksum = "2a7ab927b2637c19b3dbe0965e75d8f2d30bdd697a1516191cad2ec4df8fb28a"
dependencies = [
"windows-link",
]
@@ -4207,7 +4207,7 @@ version = "0.39.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
dependencies = [
"bitflags 2.9.0",
"bitflags 2.9.1",
]
[[package]]

View File

@@ -23,7 +23,7 @@ categories = ["command-line-interface"]
readme = "README.md"
license = "MIT"
exclude = ["assets/*", ".github", "Makefile.toml", "CONTRIBUTING.md", "*.log", "tags"]
edition = "2021"
edition = "2024"
rust-version = "1.85.0"
[workspace.dependencies]

View File

@@ -13,11 +13,11 @@ use std::time::{Duration, Instant};
use color_eyre::Result;
use crossterm::event;
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Layout, Position, Rect, Size};
use ratatui::style::{Color, Style};
use ratatui::widgets::{Widget, WidgetRef};
use ratatui::DefaultTerminal;
fn main() -> Result<()> {
color_eyre::install()?;

View File

@@ -32,9 +32,9 @@ use std::time::Duration;
use color_eyre::Result;
use crossterm::event::{Event, EventStream, KeyCode};
use octocrab::params::pulls::Sort;
use octocrab::params::Direction;
use octocrab::Page;
use octocrab::params::Direction;
use octocrab::params::pulls::Sort;
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Layout, Rect};
use ratatui::style::{Style, Stylize};

View File

@@ -14,10 +14,10 @@ use std::{
};
use color_eyre::Result;
use crossterm::ExecutableCommand;
use crossterm::event::{
self, DisableMouseCapture, EnableMouseCapture, Event, KeyCode, KeyEvent, MouseEventKind,
};
use crossterm::ExecutableCommand;
use itertools::Itertools;
use ratatui::layout::{Constraint, Layout, Position, Rect};
use ratatui::style::{Color, Stylize};

View File

@@ -208,12 +208,14 @@ fn render_barchart(frame: &mut Frame, bar_chart: Rect) {
}
fn render_line_chart(frame: &mut Frame, area: Rect) {
let datasets = vec![Dataset::default()
.name("Line from only 2 points".italic())
.marker(symbols::Marker::Braille)
.style(Style::default().fg(Color::Yellow))
.graph_type(GraphType::Line)
.data(&[(1., 1.), (4., 4.)])];
let datasets = vec![
Dataset::default()
.name("Line from only 2 points".italic())
.marker(symbols::Marker::Braille)
.style(Style::default().fg(Color::Yellow))
.graph_type(GraphType::Line)
.data(&[(1., 1.), (4., 4.)]),
];
let chart = Chart::new(datasets)
.block(Block::bordered().title(Line::from("Line chart").cyan().bold().centered()))

View File

@@ -22,12 +22,12 @@ use color_eyre::Result;
use crossterm::event;
use palette::convert::FromColorUnclamped;
use palette::{Okhsv, Srgb};
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Layout, Position, Rect};
use ratatui::style::Color;
use ratatui::text::Text;
use ratatui::widgets::Widget;
use ratatui::DefaultTerminal;
fn main() -> Result<()> {
color_eyre::install()?;

View File

@@ -11,6 +11,7 @@
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use itertools::Itertools;
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::Constraint::{self, Fill, Length, Max, Min, Percentage, Ratio};
use ratatui::layout::{Flex, Layout, Rect};
@@ -19,7 +20,6 @@ use ratatui::style::{Color, Style, Stylize};
use ratatui::symbols::{self, line};
use ratatui::text::{Line, Span, Text};
use ratatui::widgets::{Block, Paragraph, Widget, Wrap};
use ratatui::DefaultTerminal;
use strum::{Display, EnumIter, FromRepr};
fn main() -> Result<()> {
@@ -239,15 +239,20 @@ impl From<Constraint> for ConstraintName {
impl Widget for &App {
fn render(self, area: Rect, buf: &mut Buffer) {
let [header_area, instructions_area, swap_legend_area, _, blocks_area] =
Layout::vertical([
Length(2), // header
Length(2), // instructions
Length(1), // swap key legend
Length(1), // gap
Fill(1), // blocks
])
.areas(area);
let [
header_area,
instructions_area,
swap_legend_area,
_,
blocks_area,
] = Layout::vertical([
Length(2), // header
Length(2), // instructions
Length(1), // swap key legend
Length(1), // gap
Fill(1), // blocks
])
.areas(area);
App::header().render(header_area, buf);
App::instructions().render(instructions_area, buf);

View File

@@ -17,7 +17,7 @@ use ratatui::widgets::{
Block, Padding, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, StatefulWidget,
Tabs, Widget,
};
use ratatui::{symbols, DefaultTerminal};
use ratatui::{DefaultTerminal, symbols};
use strum::{Display, EnumIter, FromRepr, IntoEnumIterator};
const SPACER_HEIGHT: u16 = 0;

View File

@@ -5,10 +5,10 @@ use std::time::{Duration, Instant};
use crossterm::event::{self, DisableMouseCapture, EnableMouseCapture, KeyCode};
use crossterm::execute;
use crossterm::terminal::{
disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen,
EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode,
};
use ratatui::backend::{Backend, CrosstermBackend};
use ratatui::Terminal;
use ratatui::backend::{Backend, CrosstermBackend};
use crate::app::App;
use crate::ui;

View File

@@ -4,8 +4,8 @@ use std::sync::mpsc;
use std::time::Duration;
use std::{io, thread};
use ratatui::backend::{Backend, TermionBackend};
use ratatui::Terminal;
use ratatui::backend::{Backend, TermionBackend};
use termion::event::Key;
use termion::input::{MouseTerminal, TermRead};
use termion::raw::IntoRawMode;
@@ -78,12 +78,14 @@ fn events(tick_rate: Duration) -> mpsc::Receiver<Event> {
}
}
});
thread::spawn(move || loop {
if let Err(err) = tx.send(Event::Tick) {
eprintln!("{err}");
break;
thread::spawn(move || {
loop {
if let Err(err) = tx.send(Event::Tick) {
eprintln!("{err}");
break;
}
thread::sleep(tick_rate);
}
thread::sleep(tick_rate);
});
rx
}

View File

@@ -2,8 +2,8 @@
use std::error::Error;
use std::time::{Duration, Instant};
use ratatui::backend::TermwizBackend;
use ratatui::Terminal;
use ratatui::backend::TermwizBackend;
use termwiz::input::{InputEvent, KeyCode};
use termwiz::terminal::Terminal as TermwizTerminal;

View File

@@ -6,7 +6,7 @@ use ratatui::widgets::{
Axis, BarChart, Block, Cell, Chart, Dataset, Gauge, LineGauge, List, ListItem, Paragraph, Row,
Sparkline, Table, Tabs, Wrap,
};
use ratatui::{symbols, Frame};
use ratatui::{Frame, symbols};
use crate::app::App;
@@ -235,7 +235,9 @@ fn draw_charts(frame: &mut Frame, app: &mut App, area: Rect) {
fn draw_text(frame: &mut Frame, area: Rect) {
let text = vec![
text::Line::from("This is a paragraph with several lines. You can change style your text the way you want"),
text::Line::from(
"This is a paragraph with several lines. You can change style your text the way you want",
),
text::Line::from(""),
text::Line::from(vec![
Span::from("For example: "),
@@ -250,16 +252,17 @@ fn draw_text(frame: &mut Frame, area: Rect) {
Span::raw("Oh and if you didn't "),
Span::styled("notice", Style::default().add_modifier(Modifier::ITALIC)),
Span::raw(" you can "),
Span::styled("automatically", Style::default().add_modifier(Modifier::BOLD)),
Span::styled(
"automatically",
Style::default().add_modifier(Modifier::BOLD),
),
Span::raw(" "),
Span::styled("wrap", Style::default().add_modifier(Modifier::REVERSED)),
Span::raw(" your "),
Span::styled("text", Style::default().add_modifier(Modifier::UNDERLINED)),
Span::raw(".")
Span::raw("."),
]),
text::Line::from(
"One more thing is that it should display unicode characters: 10€"
),
text::Line::from("One more thing is that it should display unicode characters: 10€"),
];
let block = Block::bordered().title(Span::styled(
"Footer",

View File

@@ -1,7 +1,7 @@
use std::time::Duration;
use color_eyre::eyre::Context;
use color_eyre::Result;
use color_eyre::eyre::Context;
use crossterm::event::{self, KeyCode};
use itertools::Itertools;
use ratatui::buffer::Buffer;
@@ -13,7 +13,7 @@ use ratatui::{DefaultTerminal, Frame};
use strum::{Display, EnumIter, FromRepr, IntoEnumIterator};
use crate::tabs::{AboutTab, EmailTab, RecipeTab, TracerouteTab, WeatherTab};
use crate::{destroy, THEME};
use crate::{THEME, destroy};
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq)]
pub struct App {

View File

@@ -1,11 +1,11 @@
use rand::Rng;
use rand_chacha::rand_core::SeedableRng;
use ratatui::Frame;
use ratatui::buffer::Buffer;
use ratatui::layout::{Flex, Layout, Rect};
use ratatui::style::{Color, Style};
use ratatui::text::Text;
use ratatui::widgets::Widget;
use ratatui::Frame;
/// delay the start of the animation so it doesn't start immediately
const DELAY: usize = 120;

View File

@@ -34,7 +34,7 @@ use crossterm::terminal::{EnterAlternateScreen, LeaveAlternateScreen};
use ratatui::layout::Rect;
use ratatui::{TerminalOptions, Viewport};
pub use self::colors::{color_from_oklab, RgbSwatch};
pub use self::colors::{RgbSwatch, color_from_oklab};
pub use self::theme::THEME;
fn main() -> Result<()> {

View File

@@ -8,7 +8,7 @@ use ratatui::widgets::calendar::{CalendarEventStore, Monthly};
use ratatui::widgets::{Bar, BarChart, BarGroup, Block, Clear, LineGauge, Padding, Widget};
use time::OffsetDateTime;
use crate::{color_from_oklab, RgbSwatch, THEME};
use crate::{RgbSwatch, THEME, color_from_oklab};
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
pub struct WeatherTab {

View File

@@ -12,6 +12,7 @@ use std::num::NonZeroUsize;
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::Constraint::{self, Fill, Length, Max, Min, Percentage, Ratio};
use ratatui::layout::{Alignment, Flex, Layout, Rect};
@@ -22,7 +23,6 @@ use ratatui::text::{Line, Text};
use ratatui::widgets::{
Block, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, StatefulWidget, Tabs, Widget,
};
use ratatui::DefaultTerminal;
use strum::{Display, EnumIter, FromRepr, IntoEnumIterator};
fn main() -> Result<()> {
@@ -36,7 +36,7 @@ fn main() -> Result<()> {
const EXAMPLE_DATA: &[(&str, &[Constraint])] = &[
(
"Min(u16) takes any excess space always",
&[Length(10), Min(10), Max(10), Percentage(10), Ratio(1,10)],
&[Length(10), Min(10), Max(10), Percentage(10), Ratio(1, 10)],
),
(
"Fill(u16) takes any excess space always",
@@ -44,20 +44,18 @@ const EXAMPLE_DATA: &[(&str, &[Constraint])] = &[
),
(
"Here's all constraints in one line",
&[Length(10), Min(10), Max(10), Percentage(10), Ratio(1,10), Fill(1)],
),
(
"",
&[Max(50), Min(50)],
),
(
"",
&[Max(20), Length(10)],
),
(
"",
&[Max(20), Length(10)],
&[
Length(10),
Min(10),
Max(10),
Percentage(10),
Ratio(1, 10),
Fill(1),
],
),
("", &[Max(50), Min(50)]),
("", &[Max(20), Length(10)]),
("", &[Max(20), Length(10)]),
(
"Min grows always but also allows Fill to grow",
&[Percentage(50), Fill(1), Fill(2), Min(50)],
@@ -67,44 +65,58 @@ const EXAMPLE_DATA: &[(&str, &[Constraint])] = &[
&[Length(20), Length(20), Percentage(20)],
),
("", &[Length(20), Percentage(20), Length(20)]),
("A lowest priority constraint will be broken before a high priority constraint", &[Ratio(1,4), Percentage(20)]),
("`Length` is higher priority than `Percentage`", &[Percentage(20), Length(10)]),
("`Min/Max` is higher priority than `Length`", &[Length(10), Max(20)]),
(
"A lowest priority constraint will be broken before a high priority constraint",
&[Ratio(1, 4), Percentage(20)],
),
(
"`Length` is higher priority than `Percentage`",
&[Percentage(20), Length(10)],
),
(
"`Min/Max` is higher priority than `Length`",
&[Length(10), Max(20)],
),
("", &[Length(100), Min(20)]),
("`Length` is higher priority than `Min/Max`", &[Max(20), Length(10)]),
(
"`Length` is higher priority than `Min/Max`",
&[Max(20), Length(10)],
),
("", &[Min(20), Length(90)]),
("Fill is the lowest priority and will fill any excess space", &[Fill(1), Ratio(1, 4)]),
("Fill can be used to scale proportionally with other Fill blocks", &[Fill(1), Percentage(20), Fill(2)]),
(
"Fill is the lowest priority and will fill any excess space",
&[Fill(1), Ratio(1, 4)],
),
(
"Fill can be used to scale proportionally with other Fill blocks",
&[Fill(1), Percentage(20), Fill(2)],
),
("", &[Ratio(1, 3), Percentage(20), Ratio(2, 3)]),
("Legacy will stretch the last lowest priority constraint\nStretch will only stretch equal weighted constraints", &[Length(20), Length(15)]),
(
"Legacy will stretch the last lowest priority constraint\nStretch will only stretch equal weighted constraints",
&[Length(20), Length(15)],
),
("", &[Percentage(20), Length(15)]),
("`Fill(u16)` fills up excess space, but is lower priority to spacers.\ni.e. Fill will only have widths in Flex::Stretch and Flex::Legacy", &[Fill(1), Fill(1)]),
(
"`Fill(u16)` fills up excess space, but is lower priority to spacers.\ni.e. Fill will only have widths in Flex::Stretch and Flex::Legacy",
&[Fill(1), Fill(1)],
),
("", &[Length(20), Length(20)]),
(
"When not using `Flex::Stretch` or `Flex::Legacy`,\n`Min(u16)` and `Max(u16)` collapse to their lowest values",
&[Min(20), Max(20)],
),
(
"",
&[Max(20)],
),
("", &[Max(20)]),
("", &[Min(20), Max(20), Length(20), Length(20)]),
("", &[Fill(0), Fill(0)]),
(
"`Fill(1)` can be to scale with respect to other `Fill(2)`",
&[Fill(1), Fill(2)],
),
(
"",
&[Fill(1), Min(10), Max(10), Fill(2)],
),
("", &[Fill(1), Min(10), Max(10), Fill(2)]),
(
"`Fill(0)` collapses if there are other non-zero `Fill(_)`\nconstraints. e.g. `[Fill(0), Fill(0), Fill(1)]`:",
&[
Fill(0),
Fill(0),
Fill(1),
],
&[Fill(0), Fill(0), Fill(1)],
),
];

View File

@@ -9,13 +9,13 @@ use std::time::Duration;
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Constraint, Layout, Rect};
use ratatui::style::palette::tailwind;
use ratatui::style::{Color, Style, Stylize};
use ratatui::text::{Line, Span};
use ratatui::widgets::{Block, Borders, Gauge, Padding, Paragraph, Widget};
use ratatui::DefaultTerminal;
const GAUGE1_COLOR: Color = tailwind::RED.c800;
const GAUGE2_COLOR: Color = tailwind::GREEN.c800;

View File

@@ -7,8 +7,8 @@
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use std::time::Duration;
use color_eyre::eyre::Context;
use color_eyre::Result;
use color_eyre::eyre::Context;
use crossterm::event::{self, KeyCode};
use ratatui::widgets::Paragraph;
use ratatui::{DefaultTerminal, Frame};

View File

@@ -9,12 +9,12 @@
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use itertools::Itertools;
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::Rect;
use ratatui::style::Stylize;
use ratatui::text::{Line, Text};
use ratatui::widgets::Widget;
use ratatui::DefaultTerminal;
fn main() -> Result<()> {
color_eyre::install()?;

View File

@@ -22,7 +22,7 @@ use ratatui::layout::{Constraint, Layout, Rect};
use ratatui::style::{Color, Modifier, Style};
use ratatui::text::{Line, Span};
use ratatui::widgets::{Block, Gauge, LineGauge, List, ListItem, Paragraph, Widget};
use ratatui::{symbols, Frame, Terminal, TerminalOptions, Viewport};
use ratatui::{Frame, Terminal, TerminalOptions, Viewport, symbols};
fn main() -> Result<()> {
color_eyre::install()?;

View File

@@ -17,7 +17,7 @@ use crossterm::execute;
use ratatui::layout::{Position, Rect, Size};
use ratatui::style::{Color, Stylize};
use ratatui::text::Line;
use ratatui::{symbols, DefaultTerminal, Frame};
use ratatui::{DefaultTerminal, Frame, symbols};
fn main() -> Result<()> {
color_eyre::install()?;

View File

@@ -29,7 +29,7 @@
///
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
/// [Color Eyre recipe]: https://ratatui.rs/recipes/apps/color-eyre
use color_eyre::{eyre::bail, Result};
use color_eyre::{Result, eyre::bail};
use crossterm::event::{self, KeyCode};
use ratatui::text::Line;
use ratatui::widgets::{Block, Paragraph};

View File

@@ -16,7 +16,7 @@ use ratatui::widgets::{
Block, Borders, HighlightSpacing, List, ListItem, ListState, Padding, Paragraph,
StatefulWidget, Widget, Wrap,
};
use ratatui::{symbols, DefaultTerminal};
use ratatui::{DefaultTerminal, symbols};
const TODO_HEADER_STYLE: Style = Style::new().fg(SLATE.c100).bg(BLUE.c800);
const NORMAL_ROW_BG: Color = SLATE.c950;
@@ -67,12 +67,36 @@ impl Default for App {
Self {
should_exit: false,
todo_list: TodoList::from_iter([
(Status::Todo, "Rewrite everything with Rust!", "I can't hold my inner voice. He tells me to rewrite the complete universe with Rust"),
(Status::Completed, "Rewrite all of your tui apps with Ratatui", "Yes, you heard that right. Go and replace your tui with Ratatui."),
(Status::Todo, "Pet your cat", "Minnak loves to be pet by you! Don't forget to pet and give some treats!"),
(Status::Todo, "Walk with your dog", "Max is bored, go walk with him!"),
(Status::Completed, "Pay the bills", "Pay the train subscription!!!"),
(Status::Completed, "Refactor list example", "If you see this info that means I completed this task!"),
(
Status::Todo,
"Rewrite everything with Rust!",
"I can't hold my inner voice. He tells me to rewrite the complete universe with Rust",
),
(
Status::Completed,
"Rewrite all of your tui apps with Ratatui",
"Yes, you heard that right. Go and replace your tui with Ratatui.",
),
(
Status::Todo,
"Pet your cat",
"Minnak loves to be pet by you! Don't forget to pet and give some treats!",
),
(
Status::Todo,
"Walk with your dog",
"Max is bored, go walk with him!",
),
(
Status::Completed,
"Pay the bills",
"Pay the train subscription!!!",
),
(
Status::Completed,
"Refactor list example",
"If you see this info that means I completed this task!",
),
]),
}
}

View File

@@ -20,12 +20,12 @@
/// [`latest`]: https://github.com/ratatui/ratatui/tree/latest
use std::{fs::File, time::Duration};
use color_eyre::eyre::Context;
use color_eyre::Result;
use color_eyre::eyre::Context;
use crossterm::event::{self, Event, KeyCode};
use ratatui::widgets::{Block, Paragraph};
use ratatui::Frame;
use tracing::{debug, info, instrument, trace, Level};
use ratatui::widgets::{Block, Paragraph};
use tracing::{Level, debug, info, instrument, trace};
use tracing_appender::non_blocking;
use tracing_appender::non_blocking::WorkerGuard;
use tracing_subscriber::EnvFilter;

View File

@@ -10,7 +10,7 @@
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use rand::{rng, Rng};
use rand::{Rng, rng};
use ratatui::layout::{Constraint, Layout};
use ratatui::style::{Color, Style, Stylize};
use ratatui::text::Line;

View File

@@ -1255,19 +1255,23 @@ mod tests {
dbg!(input);
dbg!(input.len());
dbg!(input
.graphemes(true)
.map(|symbol| (symbol, symbol.escape_unicode().to_string(), symbol.width()))
.collect::<Vec<_>>());
dbg!(input
.chars()
.map(|char| (
char,
char.escape_unicode().to_string(),
char.width(),
char.is_control()
))
.collect::<Vec<_>>());
dbg!(
input
.graphemes(true)
.map(|symbol| (symbol, symbol.escape_unicode().to_string(), symbol.width()))
.collect::<Vec<_>>()
);
dbg!(
input
.chars()
.map(|char| (
char,
char.escape_unicode().to_string(),
char.width(),
char.is_control()
))
.collect::<Vec<_>>()
);
let mut buffer = Buffer::filled(Rect::new(0, 0, 7, 1), Cell::new("x"));
buffer.set_string(0, 0, input, Style::new());

View File

@@ -13,7 +13,7 @@ use lru::LruCache;
use self::strengths::{
ALL_SEGMENT_GROW, FILL_GROW, GROW, LENGTH_SIZE_EQ, MAX_SIZE_EQ, MAX_SIZE_LE, MIN_SIZE_EQ,
MIN_SIZE_GE, PERCENTAGE_SIZE_EQ, RATIO_SIZE_EQ, SPACER_SIZE_EQ, SPACE_GROW,
MIN_SIZE_GE, PERCENTAGE_SIZE_EQ, RATIO_SIZE_EQ, SPACE_GROW, SPACER_SIZE_EQ,
};
use crate::layout::{Constraint, Direction, Flex, Margin, Rect};

View File

@@ -736,7 +736,10 @@ mod tests {
#[case(Modifier::HIDDEN, "HIDDEN")]
#[case(Modifier::CROSSED_OUT, "CROSSED_OUT")]
#[case(Modifier::BOLD | Modifier::DIM, "BOLD | DIM")]
#[case(Modifier::all(), "BOLD | DIM | ITALIC | UNDERLINED | SLOW_BLINK | RAPID_BLINK | REVERSED | HIDDEN | CROSSED_OUT")]
#[case(
Modifier::all(),
"BOLD | DIM | ITALIC | UNDERLINED | SLOW_BLINK | RAPID_BLINK | REVERSED | HIDDEN | CROSSED_OUT"
)]
fn modifier_debug(#[case] modifier: Modifier, #[case] expected: &str) {
assert_eq!(format!("{modifier:?}"), expected);
}

View File

@@ -403,8 +403,8 @@
//! # Example
//!
//! ```rust
//! use ratatui_core::style::palette::material::{BLUE, RED};
//! use ratatui_core::style::Color;
//! use ratatui_core::style::palette::material::{BLUE, RED};
//!
//! assert_eq!(RED.c500, Color::Rgb(244, 67, 54));
//! assert_eq!(BLUE.c500, Color::Rgb(33, 150, 243));

View File

@@ -268,8 +268,8 @@
//! # Example
//!
//! ```rust
//! use ratatui_core::style::palette::tailwind::{BLUE, RED};
//! use ratatui_core::style::Color;
//! use ratatui_core::style::palette::tailwind::{BLUE, RED};
//!
//! assert_eq!(RED.c500, Color::Rgb(239, 68, 68));
//! assert_eq!(BLUE.c500, Color::Rgb(59, 130, 246));

View File

@@ -1,10 +1,10 @@
//! Conversions from colors in the `palette` crate to [`Color`].
use ::palette::LinSrgb;
use ::palette::bool_mask::LazySelect;
use ::palette::num::{Arithmetics, MulSub, PartialCmp, Powf, Real};
use ::palette::LinSrgb;
use palette::stimulus::IntoStimulus;
use palette::Srgb;
use palette::stimulus::IntoStimulus;
use crate::style::Color;

View File

@@ -1,6 +1,6 @@
//! Symbols and markers for drawing various widgets.
pub use marker::{Marker, DOT};
pub use marker::{DOT, Marker};
pub mod bar;
pub mod block;

View File

@@ -1308,13 +1308,16 @@ mod tests {
#[test]
fn regression_1032() {
let line = Line::from(
"🦀 RFC8628 OAuth 2.0 Device Authorization GrantでCLIからGithubのaccess tokenを取得する"
"🦀 RFC8628 OAuth 2.0 Device Authorization GrantでCLIからGithubのaccess tokenを取得する",
);
let mut buf = Buffer::empty(Rect::new(0, 0, 83, 1));
line.render(buf.area, &mut buf);
assert_eq!(buf, Buffer::with_lines([
"🦀 RFC8628 OAuth 2.0 Device Authorization GrantでCLIからGithubのaccess tokenを取得 "
]));
assert_eq!(
buf,
Buffer::with_lines([
"🦀 RFC8628 OAuth 2.0 Device Authorization GrantでCLIからGithubのaccess tokenを取得 "
])
);
}
/// Documentary test to highlight the crab emoji width / length discrepancy

View File

@@ -52,12 +52,12 @@ use ratatui_core::style::{Color, Modifier, Style};
/// ```rust,no_run
/// use std::io::{stderr, stdout};
///
/// use crossterm::terminal::{
/// disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen,
/// };
/// use crossterm::ExecutableCommand;
/// use ratatui::backend::CrosstermBackend;
/// use crossterm::terminal::{
/// EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode,
/// };
/// use ratatui::Terminal;
/// use ratatui::backend::CrosstermBackend;
///
/// let mut backend = CrosstermBackend::new(stdout());
/// // or

View File

@@ -1,7 +1,7 @@
[package]
name = "ratatui-macros"
version = "0.7.0-alpha.2"
edition = "2021"
edition.workspace = true
authors = ["The Ratatui Developers"]
description = "Macros for Ratatui"
license = "MIT"

View File

@@ -47,10 +47,10 @@ use termion::{color as tcolor, style as tstyle};
/// ```rust,no_run
/// use std::io::{stderr, stdout};
///
/// use ratatui::Terminal;
/// use ratatui::backend::TermionBackend;
/// use ratatui::termion::raw::IntoRawMode;
/// use ratatui::termion::screen::IntoAlternateScreen;
/// use ratatui::Terminal;
///
/// let writer = stdout().into_raw_mode()?.into_alternate_screen()?;
/// let mut backend = TermionBackend::new(writer);
@@ -402,13 +402,13 @@ impl FromTermion<tcolor::AnsiValue> for Color {
impl FromTermion<tcolor::Bg<tcolor::AnsiValue>> for Style {
fn from_termion(value: tcolor::Bg<tcolor::AnsiValue>) -> Self {
Self::default().bg(Color::Indexed(value.0 .0))
Self::default().bg(Color::Indexed(value.0.0))
}
}
impl FromTermion<tcolor::Fg<tcolor::AnsiValue>> for Style {
fn from_termion(value: tcolor::Fg<tcolor::AnsiValue>) -> Self {
Self::default().fg(Color::Indexed(value.0 .0))
Self::default().fg(Color::Indexed(value.0.0))
}
}
@@ -420,13 +420,13 @@ impl FromTermion<tcolor::Rgb> for Color {
impl FromTermion<tcolor::Bg<tcolor::Rgb>> for Style {
fn from_termion(value: tcolor::Bg<tcolor::Rgb>) -> Self {
Self::default().bg(Color::Rgb(value.0 .0, value.0 .1, value.0 .2))
Self::default().bg(Color::Rgb(value.0.0, value.0.1, value.0.2))
}
}
impl FromTermion<tcolor::Fg<tcolor::Rgb>> for Style {
fn from_termion(value: tcolor::Fg<tcolor::Rgb>) -> Self {
Self::default().fg(Color::Rgb(value.0 .0, value.0 .1, value.0 .2))
Self::default().fg(Color::Rgb(value.0.0, value.0.1, value.0.2))
}
}

View File

@@ -46,8 +46,8 @@ use termwiz::terminal::{ScreenSize, SystemTerminal, Terminal};
/// # Example
///
/// ```rust,no_run
/// use ratatui::backend::TermwizBackend;
/// use ratatui::Terminal;
/// use ratatui::backend::TermwizBackend;
///
/// let backend = TermwizBackend::new()?;
/// let mut terminal = Terminal::new(backend)?;

View File

@@ -20,7 +20,7 @@ use ratatui::layout::{Constraint, Layout, Rect};
use ratatui::style::{Modifier, Style, Stylize};
use ratatui::text::{Line, Span};
use ratatui::widgets::{Gauge, LineGauge};
use ratatui::{symbols, DefaultTerminal, Frame};
use ratatui::{DefaultTerminal, Frame, symbols};
fn main() -> Result<()> {
color_eyre::install()?;

View File

@@ -18,13 +18,13 @@ use core::time::Duration;
use color_eyre::Result;
use crossterm::event::{self, KeyCode};
use ratatui::DefaultTerminal;
use ratatui::buffer::Buffer;
use ratatui::layout::Constraint::{Length, Min};
use ratatui::layout::{Layout, Rect};
use ratatui::style::palette::tailwind;
use ratatui::style::{Style, Stylize};
use ratatui::widgets::{LineGauge, Paragraph, Widget};
use ratatui::DefaultTerminal;
fn main() -> Result<()> {
color_eyre::install()?;

View File

@@ -22,7 +22,7 @@ use ratatui::layout::{Constraint, Layout, Rect};
use ratatui::style::{Color, Style, Stylize};
use ratatui::text::{Line, Span};
use ratatui::widgets::{RenderDirection, Sparkline};
use ratatui::{symbols, DefaultTerminal, Frame};
use ratatui::{DefaultTerminal, Frame, symbols};
fn main() -> Result<()> {
color_eyre::install()?;

View File

@@ -20,7 +20,7 @@ use ratatui::layout::{Alignment, Constraint, Layout, Offset, Rect};
use ratatui::style::{Color, Style, Stylize};
use ratatui::text::{Line, Span};
use ratatui::widgets::{Block, Paragraph, Tabs};
use ratatui::{symbols, DefaultTerminal, Frame};
use ratatui::{DefaultTerminal, Frame, symbols};
fn main() -> Result<()> {
color_eyre::install()?;

View File

@@ -87,8 +87,8 @@ pub mod title;
///
/// You may also use multiple titles like in the following:
/// ```
/// use ratatui::widgets::block::{Position, Title};
/// use ratatui::widgets::Block;
/// use ratatui::widgets::block::{Position, Title};
///
/// Block::new()
/// .title("Title 1")
@@ -348,8 +348,8 @@ impl<'a> Block<'a> {
/// This example positions all titles on the bottom except the "top" title which explicitly sets
/// [`Position::Top`].
/// ```
/// use ratatui::widgets::block::Position;
/// use ratatui::widgets::Block;
/// use ratatui::widgets::block::Position;
///
/// Block::new()
/// .title_position(Position::Bottom)
@@ -536,8 +536,8 @@ impl<'a> Block<'a> {
///
/// Draw a block nested within another block
/// ```
/// use ratatui::widgets::Block;
/// use ratatui::Frame;
/// use ratatui::widgets::Block;
///
/// # fn render_nested_block(frame: &mut Frame) {
/// let outer_block = Block::bordered().title("Outer");

View File

@@ -49,8 +49,8 @@ use strum::{Display, EnumString};
/// Complete example
/// ```
/// use ratatui::layout::Alignment;
/// use ratatui::widgets::block::{Position, Title};
/// use ratatui::widgets::Block;
/// use ratatui::widgets::block::{Position, Title};
///
/// Title::from("Title")
/// .position(Position::Top)
@@ -84,8 +84,8 @@ pub struct Title<'a> {
/// # Example
///
/// ```
/// use ratatui::widgets::block::{Position, Title};
/// use ratatui::widgets::Block;
/// use ratatui::widgets::block::{Position, Title};
///
/// Block::new().title(Title::from("title").position(Position::Bottom));
/// ```

View File

@@ -596,8 +596,8 @@ impl<'a> Context<'a> {
///
/// ```
/// use ratatui::style::Color;
/// use ratatui::widgets::canvas::{Canvas, Line, Map, MapResolution, Rectangle};
/// use ratatui::widgets::Block;
/// use ratatui::widgets::canvas::{Canvas, Line, Map, MapResolution, Rectangle};
///
/// Canvas::default()
/// .block(Block::bordered().title("Canvas"))

View File

@@ -1,4 +1,4 @@
use line_clipping::{cohen_sutherland, LineSegment, Point, Window};
use line_clipping::{LineSegment, Point, Window, cohen_sutherland};
use ratatui_core::style::Color;
use crate::canvas::{Painter, Shape};

View File

@@ -1521,10 +1521,12 @@ mod tests {
(8.0, 9.0),
(10.0, 10.0),
];
let chart = Chart::new(vec![Dataset::default()
.data(&data)
.marker(symbols::Marker::Dot)
.graph_type(GraphType::Bar)])
let chart = Chart::new(vec![
Dataset::default()
.data(&data)
.marker(symbols::Marker::Dot)
.graph_type(GraphType::Bar),
])
.x_axis(Axis::default().bounds([0.0, 10.0]))
.y_axis(Axis::default().bounds([0.0, 10.0]));
let area = Rect::new(0, 0, 11, 11);

View File

@@ -11,9 +11,9 @@ use ratatui_core::widgets::Widget;
/// # Examples
///
/// ```
/// use ratatui::Frame;
/// use ratatui::layout::Rect;
/// use ratatui::widgets::{Block, Clear};
/// use ratatui::Frame;
///
/// fn draw_on_clear(f: &mut Frame, area: Rect) {
/// let block = Block::bordered().title("Block");

View File

@@ -47,10 +47,10 @@ mod state;
/// # Examples
///
/// ```
/// use ratatui::Frame;
/// use ratatui::layout::Rect;
/// use ratatui::style::{Style, Stylize};
/// use ratatui::widgets::{Block, List, ListDirection, ListItem};
/// use ratatui::Frame;
///
/// # fn ui(frame: &mut Frame) {
/// # let area = Rect::default();
@@ -70,10 +70,10 @@ mod state;
/// # Stateful example
///
/// ```rust
/// use ratatui::Frame;
/// use ratatui::layout::Rect;
/// use ratatui::style::{Style, Stylize};
/// use ratatui::widgets::{Block, List, ListState};
/// use ratatui::Frame;
///
/// # fn ui(frame: &mut Frame) {
/// # let area = Rect::default();

View File

@@ -20,9 +20,9 @@
/// # Example
///
/// ```rust
/// use ratatui::Frame;
/// use ratatui::layout::Rect;
/// use ratatui::widgets::{List, ListState};
/// use ratatui::Frame;
///
/// # fn ui(frame: &mut Frame) {
/// # let area = Rect::default();

View File

@@ -462,8 +462,7 @@ mod tests {
let width = 20;
let text =
"abcd efghij klmnopabcd efgh ijklmnopabcdefg hijkl mnopab c d e f g h i j k l m n o";
let text_multi_space =
"abcd efghij klmnopabcd efgh ijklmnopabcdefg hijkl mnopab c d e f g h i j k l \
let text_multi_space = "abcd efghij klmnopabcd efgh ijklmnopabcdefg hijkl mnopab c d e f g h i j k l \
m n o";
let (word_wrapper_single_space, _, _) =
run_composer(Composer::WordWrapper { trim: true }, text, width as u16);
@@ -516,8 +515,7 @@ mod tests {
#[test]
fn line_composer_max_line_width_of_1_double_width_characters() {
let width = 1;
let text =
"コンピュータ上で文字を扱う場合、典型的には文字\naaa\naによる通信を行う場合にその\
let text = "コンピュータ上で文字を扱う場合、典型的には文字\naaa\naによる通信を行う場合にその\
両端点では、";
let (word_wrapper, _, _) = run_composer(Composer::WordWrapper { trim: true }, text, width);
let (line_truncator, _, _) = run_composer(Composer::LineTruncator, text, width);

View File

@@ -12,7 +12,7 @@ use core::iter;
use ratatui_core::buffer::Buffer;
use ratatui_core::layout::Rect;
use ratatui_core::style::Style;
use ratatui_core::symbols::scrollbar::{Set, DOUBLE_HORIZONTAL, DOUBLE_VERTICAL};
use ratatui_core::symbols::scrollbar::{DOUBLE_HORIZONTAL, DOUBLE_VERTICAL, Set};
use ratatui_core::widgets::StatefulWidget;
use strum::{Display, EnumString};
use unicode_width::UnicodeWidthStr;
@@ -43,12 +43,12 @@ use crate::polyfills::F64Polyfills;
/// # Examples
///
/// ```rust
/// use ratatui::Frame;
/// use ratatui::layout::{Margin, Rect};
/// use ratatui::text::Line;
/// use ratatui::widgets::{
/// Block, Borders, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, StatefulWidget,
/// };
/// use ratatui::Frame;
///
/// # fn render_paragraph_with_scrollbar(frame: &mut Frame, area: Rect) {
/// let vertical_scroll = 0; // from app state

View File

@@ -166,9 +166,9 @@ impl<'a> Sparkline<'a> {
/// Create a `Sparkline` from a slice of `u64`:
///
/// ```
/// use ratatui::Frame;
/// use ratatui::layout::Rect;
/// use ratatui::widgets::Sparkline;
/// use ratatui::Frame;
///
/// # fn ui(frame: &mut Frame) {
/// # let area = Rect::default();

View File

@@ -199,10 +199,10 @@ mod state;
/// user to scroll through the rows and select one of them.
///
/// ```rust
/// use ratatui::Frame;
/// use ratatui::layout::{Constraint, Rect};
/// use ratatui::style::{Style, Stylize};
/// use ratatui::widgets::{Block, Row, Table, TableState};
/// use ratatui::Frame;
///
/// # fn ui(frame: &mut Frame) {
/// # let area = Rect::default();

View File

@@ -24,9 +24,9 @@
/// # Example
///
/// ```rust
/// use ratatui::Frame;
/// use ratatui::layout::{Constraint, Rect};
/// use ratatui::widgets::{Row, Table, TableState};
/// use ratatui::Frame;
///
/// # fn ui(frame: &mut Frame) {
/// # let area = Rect::default();

View File

@@ -1,4 +1,4 @@
use criterion::{criterion_group, Bencher, BenchmarkId, Criterion};
use criterion::{Bencher, BenchmarkId, Criterion, criterion_group};
use rand::Rng;
use ratatui::buffer::Buffer;
use ratatui::layout::{Direction, Rect};

View File

@@ -1,4 +1,4 @@
use criterion::{criterion_group, BatchSize, Bencher, Criterion};
use criterion::{BatchSize, Bencher, Criterion, criterion_group};
use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Rect};
use ratatui::text::Line;

View File

@@ -1,4 +1,4 @@
use criterion::{black_box, BenchmarkId, Criterion};
use criterion::{BenchmarkId, Criterion, black_box};
use ratatui::buffer::{Buffer, Cell};
use ratatui::layout::Rect;
use ratatui::text::Line;

View File

@@ -1,6 +1,6 @@
use std::hint::black_box;
use criterion::{criterion_group, Criterion};
use criterion::{Criterion, criterion_group};
use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Rect};
use ratatui::style::Stylize;

View File

@@ -1,4 +1,4 @@
use criterion::{criterion_group, BatchSize, Bencher, BenchmarkId, Criterion};
use criterion::{BatchSize, Bencher, BenchmarkId, Criterion, criterion_group};
use ratatui::buffer::Buffer;
use ratatui::layout::Rect;
use ratatui::widgets::{List, ListItem, ListState, StatefulWidget, Widget};

View File

@@ -1,4 +1,4 @@
use criterion::{black_box, criterion_group, BatchSize, Bencher, BenchmarkId, Criterion};
use criterion::{BatchSize, Bencher, BenchmarkId, Criterion, black_box, criterion_group};
use ratatui::buffer::Buffer;
use ratatui::layout::Rect;
use ratatui::widgets::{Paragraph, Widget, Wrap};

View File

@@ -1,4 +1,4 @@
use criterion::{black_box, criterion_group, BatchSize, Bencher, BenchmarkId, Criterion};
use criterion::{BatchSize, Bencher, BenchmarkId, Criterion, black_box, criterion_group};
use ratatui::layout::Rect;
fn rect_iters_benchmark(c: &mut Criterion) {

View File

@@ -1,4 +1,4 @@
use criterion::{criterion_group, Bencher, BenchmarkId, Criterion};
use criterion::{Bencher, BenchmarkId, Criterion, criterion_group};
use rand::Rng;
use ratatui::buffer::Buffer;
use ratatui::layout::Rect;

View File

@@ -1,4 +1,4 @@
use criterion::{criterion_group, BatchSize, Bencher, BenchmarkId, Criterion};
use criterion::{BatchSize, Bencher, BenchmarkId, Criterion, criterion_group};
use ratatui::buffer::Buffer;
use ratatui::layout::{Constraint, Rect};
use ratatui::widgets::{Row, StatefulWidget, Table, TableState, Widget};

View File

@@ -1,11 +1,11 @@
use std::io::{self, stdout, Stdout};
use std::io::{self, Stdout, stdout};
use ratatui_core::terminal::{Terminal, TerminalOptions};
use ratatui_crossterm::CrosstermBackend;
use ratatui_crossterm::crossterm::execute;
use ratatui_crossterm::crossterm::terminal::{
disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen,
EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode,
};
use ratatui_crossterm::CrosstermBackend;
/// A type alias for the default terminal type.
///

View File

@@ -39,8 +39,8 @@
//!
//! ```rust,no_run
//! use crossterm::event::{self, Event};
//! use ratatui::text::Text;
//! use ratatui::Frame;
//! use ratatui::text::Text;
//!
//! fn main() {
//! let mut terminal = ratatui::init();
@@ -136,8 +136,8 @@
//! The closure passed to the [`Terminal::draw`] method should handle the rendering of a full frame.
//!
//! ```rust,no_run
//! use ratatui::widgets::Paragraph;
//! use ratatui::Frame;
//! use ratatui::widgets::Paragraph;
//!
//! fn run(terminal: &mut ratatui::DefaultTerminal) -> std::io::Result<()> {
//! loop {
@@ -187,9 +187,9 @@
//! section of the [Ratatui Website] for more info.
//!
//! ```rust,no_run
//! use ratatui::Frame;
//! use ratatui::layout::{Constraint, Layout};
//! use ratatui::widgets::Block;
//! use ratatui::Frame;
//!
//! fn draw(frame: &mut Frame) {
//! use Constraint::{Fill, Length, Min};
@@ -229,11 +229,11 @@
//! [Ratatui Website] for more info.
//!
//! ```rust,no_run
//! use ratatui::Frame;
//! use ratatui::layout::{Constraint, Layout};
//! use ratatui::style::{Color, Modifier, Style, Stylize};
//! use ratatui::text::{Line, Span};
//! use ratatui::widgets::{Block, Paragraph};
//! use ratatui::Frame;
//!
//! fn draw(frame: &mut Frame) {
//! let areas = Layout::vertical([Constraint::Length(1); 4]).split(frame.area());
@@ -351,7 +351,7 @@ pub use ratatui_termwiz::termwiz;
#[cfg(feature = "crossterm")]
pub use crate::init::{
init, init_with_options, restore, try_init, try_init_with_options, try_restore, DefaultTerminal,
DefaultTerminal, init, init_with_options, restore, try_init, try_init_with_options, try_restore,
};
/// Re-exports for the backend implementations.

View File

@@ -45,4 +45,4 @@ pub use crate::style::{self, Color, Modifier, Style, Stylize};
pub use crate::text::{self, Line, Masked, Span, Text};
pub use crate::widgets::block::BlockExt;
pub use crate::widgets::{StatefulWidget, Widget};
pub use crate::{symbols, Frame, Terminal};
pub use crate::{Frame, Terminal, symbols};

View File

@@ -14,6 +14,7 @@
// not too happy about the redundancy in these tests,
// but if that helps readability then it's ok i guess /shrug
use ratatui::Terminal;
use ratatui::backend::TestBackend;
use ratatui::layout::{Constraint, Direction, Layout};
use ratatui::text::Line;
@@ -21,7 +22,6 @@ use ratatui::widgets::{
Block, Borders, List, ListState, Row, Scrollbar, ScrollbarOrientation, ScrollbarState, Table,
TableState,
};
use ratatui::Terminal;
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
struct AppState {

View File

@@ -1,6 +1,6 @@
#![cfg(feature = "unstable-widget-ref")]
use std::any::{type_name, Any};
use std::any::{Any, type_name};
use std::cell::RefCell;
use pretty_assertions::assert_eq;

View File

@@ -1,9 +1,9 @@
use ratatui::Terminal;
use ratatui::backend::TestBackend;
use ratatui::buffer::Buffer;
use ratatui::layout::Rect;
use ratatui::style::{Color, Style, Stylize};
use ratatui::widgets::{BarChart, Block, Paragraph};
use ratatui::Terminal;
#[test]
fn barchart_can_be_stylized() {

View File

@@ -1,8 +1,8 @@
use ratatui::Terminal;
use ratatui::backend::TestBackend;
use ratatui::buffer::Buffer;
use ratatui::style::{Color, Style};
use ratatui::widgets::{Bar, BarChart, BarGroup, Block};
use ratatui::Terminal;
// check that bars fill up correctly up to max value
#[test]

View File

@@ -1,10 +1,10 @@
use ratatui::Terminal;
use ratatui::backend::TestBackend;
use ratatui::buffer::Buffer;
use ratatui::layout::{Alignment, Rect};
use ratatui::style::{Color, Style};
use ratatui::text::{Line, Span};
use ratatui::widgets::{Block, Borders};
use ratatui::Terminal;
use rstest::rstest;
#[test]

View File

@@ -1,10 +1,10 @@
#![cfg(feature = "widget-calendar")]
use ratatui::Terminal;
use ratatui::backend::TestBackend;
use ratatui::buffer::Buffer;
use ratatui::style::Style;
use ratatui::widgets::calendar::{CalendarEventStore, Monthly};
use ratatui::widgets::Widget;
use ratatui::Terminal;
use ratatui::widgets::calendar::{CalendarEventStore, Monthly};
use time::{Date, Month};
#[track_caller]

View File

@@ -1,9 +1,9 @@
use ratatui::Terminal;
use ratatui::backend::TestBackend;
use ratatui::buffer::Buffer;
use ratatui::style::{Color, Style};
use ratatui::text::Span;
use ratatui::widgets::canvas::Canvas;
use ratatui::Terminal;
#[test]
fn widgets_canvas_draw_labels() {

View File

@@ -5,7 +5,7 @@ use ratatui::style::{Color, Style};
use ratatui::text::{self, Span};
use ratatui::widgets::GraphType::Line;
use ratatui::widgets::{Axis, Block, Chart, Dataset};
use ratatui::{symbols, Terminal};
use ratatui::{Terminal, symbols};
use rstest::rstest;
fn create_labels<'a>(labels: &'a [&'a str]) -> Vec<Span<'a>> {
@@ -45,10 +45,12 @@ fn widgets_chart_can_render_on_small_areas(#[case] width: u16, #[case] height: u
let mut terminal = Terminal::new(backend).unwrap();
terminal
.draw(|f| {
let datasets = vec![Dataset::default()
.marker(symbols::Marker::Braille)
.style(Style::default().fg(Color::Magenta))
.data(&[(0.0, 0.0)])];
let datasets = vec![
Dataset::default()
.marker(symbols::Marker::Braille)
.style(Style::default().fg(Color::Magenta))
.data(&[(0.0, 0.0)]),
];
let chart = Chart::new(datasets)
.block(Block::bordered().title("Plot"))
.x_axis(
@@ -261,10 +263,12 @@ fn widgets_chart_can_have_axis_with_zero_length_bounds() {
terminal
.draw(|f| {
let datasets = vec![Dataset::default()
.marker(symbols::Marker::Braille)
.style(Style::default().fg(Color::Magenta))
.data(&[(0.0, 0.0)])];
let datasets = vec![
Dataset::default()
.marker(symbols::Marker::Braille)
.style(Style::default().fg(Color::Magenta))
.data(&[(0.0, 0.0)]),
];
let chart = Chart::new(datasets)
.block(Block::bordered().title("Plot"))
.x_axis(
@@ -297,14 +301,16 @@ fn widgets_chart_handles_overflows() {
terminal
.draw(|f| {
let datasets = vec![Dataset::default()
.marker(symbols::Marker::Braille)
.style(Style::default().fg(Color::Magenta))
.data(&[
(1_588_298_471.0, 1.0),
(1_588_298_473.0, 0.0),
(1_588_298_496.0, 1.0),
])];
let datasets = vec![
Dataset::default()
.marker(symbols::Marker::Braille)
.style(Style::default().fg(Color::Magenta))
.data(&[
(1_588_298_471.0, 1.0),
(1_588_298_473.0, 0.0),
(1_588_298_496.0, 1.0),
]),
];
let chart = Chart::new(datasets)
.block(Block::bordered().title("Plot"))
.x_axis(
@@ -374,10 +380,12 @@ fn widgets_chart_top_line_styling_is_correct() {
terminal
.draw(|f| {
let data: [(f64, f64); 2] = [(0.0, 1.0), (1.0, 1.0)];
let widget = Chart::new(vec![Dataset::default()
.data(&data)
.graph_type(ratatui::widgets::GraphType::Line)
.style(data_style)])
let widget = Chart::new(vec![
Dataset::default()
.data(&data)
.graph_type(ratatui::widgets::GraphType::Line)
.style(data_style),
])
.y_axis(
Axis::default()
.title(Span::styled("abc", title_style))

View File

@@ -4,7 +4,7 @@ use ratatui::layout::{Constraint, Direction, Layout, Rect};
use ratatui::style::{Color, Modifier, Style};
use ratatui::text::Span;
use ratatui::widgets::{Block, Gauge, LineGauge};
use ratatui::{symbols, Terminal};
use ratatui::{Terminal, symbols};
#[test]
fn widgets_gauge_renders() {

View File

@@ -4,7 +4,7 @@ use ratatui::layout::Rect;
use ratatui::style::{Color, Style};
use ratatui::text::Line;
use ratatui::widgets::{Block, Borders, HighlightSpacing, List, ListItem, ListState};
use ratatui::{symbols, Terminal};
use ratatui::{Terminal, symbols};
use rstest::rstest;
#[test]

View File

@@ -1,9 +1,9 @@
use ratatui::Terminal;
use ratatui::backend::TestBackend;
use ratatui::buffer::Buffer;
use ratatui::layout::Alignment;
use ratatui::text::{Line, Span, Text};
use ratatui::widgets::{Block, Padding, Paragraph, Wrap};
use ratatui::Terminal;
/// Tests the [`Paragraph`] widget against the expected [`Buffer`] by rendering it onto an equal
/// area and comparing the rendered and expected content.

View File

@@ -1,12 +1,12 @@
#![allow(deprecated)]
use ratatui::Terminal;
use ratatui::backend::TestBackend;
use ratatui::buffer::Buffer;
use ratatui::layout::Constraint;
use ratatui::style::{Color, Modifier, Style};
use ratatui::text::{Line, Span};
use ratatui::widgets::{Block, Borders, Cell, HighlightSpacing, Row, Table, TableState};
use ratatui::Terminal;
use rstest::rstest;
#[rstest]

View File

@@ -3,7 +3,7 @@ use ratatui::buffer::Buffer;
use ratatui::layout::Rect;
use ratatui::style::Style;
use ratatui::widgets::Tabs;
use ratatui::{symbols, Terminal};
use ratatui::{Terminal, symbols};
#[test]
fn widgets_tabs_should_not_panic_on_narrow_areas() {

View File

@@ -1,6 +1,6 @@
[package]
name = "xtask"
edition = "2021"
edition.workspace = true
publish = false
license.workspace = true

View File

@@ -13,7 +13,7 @@ use self::clippy::Clippy;
use self::docs::Docs;
use self::format::Format;
use self::typos::Typos;
use crate::{run_cargo, ExpressionExt, Run};
use crate::{ExpressionExt, Run, run_cargo};
mod backend;
mod check;

View File

@@ -1,7 +1,7 @@
use clap::ValueEnum;
use color_eyre::Result;
use crate::{run_cargo, Run};
use crate::{Run, run_cargo};
/// Check backend
#[derive(Clone, Debug, clap::Args)]

View File

@@ -1,6 +1,6 @@
use color_eyre::Result;
use crate::{run_cargo, Run};
use crate::{Run, run_cargo};
/// Run cargo check
#[derive(Clone, Debug, clap::Args)]

View File

@@ -1,6 +1,6 @@
use color_eyre::Result;
use crate::{run_cargo, Run};
use crate::{Run, run_cargo};
/// Run clippy on the project
#[derive(Clone, Debug, clap::Args)]

View File

@@ -1,6 +1,6 @@
use color_eyre::Result;
use crate::{run_cargo, Run};
use crate::{Run, run_cargo};
/// Generate code coverage report
#[derive(Clone, Debug, clap::Args)]

View File

@@ -1,7 +1,7 @@
use color_eyre::Result;
use itertools::{Itertools, Position};
use crate::{run_cargo_nightly, workspace_libs, Run};
use crate::{Run, run_cargo_nightly, workspace_libs};
/// Check documentation for errors and warnings
#[derive(Clone, Debug, clap::Args)]

View File

@@ -1,7 +1,7 @@
use color_eyre::Result;
use duct::cmd;
use crate::{run_cargo_nightly, ExpressionExt, Run};
use crate::{ExpressionExt, Run, run_cargo_nightly};
/// Check for formatting issues in the project
#[derive(Clone, Debug, clap::Args)]

View File

@@ -1,6 +1,6 @@
use color_eyre::Result;
use crate::{run_cargo, workspace_libs, Run};
use crate::{Run, run_cargo, workspace_libs};
/// Check if README.md is up-to-date (using cargo-rdme)
#[derive(Clone, Debug, clap::Args)]

View File

@@ -10,8 +10,8 @@ use std::process::Output;
use cargo_metadata::{MetadataCommand, TargetKind};
use clap::Parser;
use clap_verbosity_flag::{InfoLevel, Verbosity};
use color_eyre::eyre::Context;
use color_eyre::Result;
use color_eyre::eyre::Context;
use commands::Command;
use duct::cmd;