Rust library that's all about cooking up terminal user interfaces (TUIs) 👨🍳🐀
97ee102 (buffer) Track_caller for index_of by @EdJoPaTo in #1046
The caller put in the wrong x/y -> the caller is the cause.
bf09234 (table) Make TableState::new const by @EdJoPaTo in #1040
4392759 (examples) Changed user_input example to work with multi-byte unicode chars by @OkieOth in #1069
This is the proposed solution for issue #1068. It solves the bug in the
user_input example with multi-byte UTF-8 characters as input.
Fixes:#1068
20fc0dd (examples) Fix key handling in constraints by @psobolik in #1066
Add check for `KeyEventKind::Press` to constraints example's event
handler to eliminate double keys
on Windows.
Fixes:#1062
f4637d4 (reflow) Allow wrapping at zero width whitespace by @kxxt in #1074
0a16496
(uncategorized) Use to_string
to serialize Color by @SleepySwords in #934
Since deserialize now uses `FromStr` to deserialize color, serializing
`Color` RGB values, as well as index values, would produce an output
that would no longer be able to be deserialized without causing an
error.
Color::Rgb will now be serialized as the hex representation of their
value.
For example, with serde_json, Color::Rgb(255, 0, 255)
would be
serialized as "#FF00FF"
rather than {"Rgb": [255, 0, 255]}
.
Color::Indexed will now be serialized as just the string of the index.
For example, with serde_json, Color::Indexed(10)
would be serialized
as "10"
rather than {"Indexed": 10}
.
Other color variants remain the same.
baedc39 (buffer) Simplify set_stringn logic by @EdJoPaTo in #1083
bef5bcf (example) Remove pointless new method by @EdJoPaTo in #1038
Use `App::default()` directly.
da1ade7 (github) Update code owners about past maintainers by @orhun in #1073
As per suggestion in
https://github.com/ratatui-org/ratatui/pull/1067#issuecomment-2079766990
It's good for historical purposes!
3687f78 (github) Update code owners by @orhun in #1067
Removes the team members that are not able to review PRs recently (with
their approval ofc)
e95230b (uncategorized) Add note about scrollbar state content length by @Utagai in #1077
366c2a0 (block) Use Block::bordered by @EdJoPaTo in #1041
Block::bordered()
is shorter than
Block::new().borders(Borders::ALL)
, requires one less import
(Borders
) and in case Block::default()
was used before can even be
const
.
2e71c18 (buffer) Simplify Buffer::filled with macro by @EdJoPaTo in #1036
The `vec![]` macro is highly optimized by the Rust team and shorter.
Don't do it manually.
This change is mainly cleaner code. The only production code that uses
this is `Terminal::with_options` and `Terminal::insert_before` so it's
not performance relevant on every render.
81b9633 (calendar) Use const fn by @EdJoPaTo in #1039
Also, do the comparison without `as u8`. Stays the same at runtime and
is cleaner code.
c442dfd (canvas) Change map data to const instead of static by @EdJoPaTo in #1037
1706b0a (crossterm) Speed up combined fg and bg color changes by up to 20% by @joshka in #1072
5fbb77a (readme) Use terminal theme for badges by @TadoTheMiner in #1026
The badges in the readme were all the default theme. Giving them
prettier colors that match the terminal gif is better. I've used the
colors from the VHS repo.
bef2bc1 (cargo) Add homepage to Cargo.toml by @joshka in #1080
64eb391 (uncategorized) Fixup cargo lint for windows targets by @joshka in #1071
Crossterm brings in multiple versions of the same dep
326a461 (uncategorized) Add package categories field by @mcskware in #1035
Add the package categories field in Cargo.toml, with value
`["command-line-interface"]`. This fixes the (currently non-default)
clippy cargo group lint
[`clippy::cargo_common_metadata`](https://rust-lang.github.io/rust-clippy/master/index.html#/cargo_common_metadata).
As per discussion in [Cargo package categories
suggestions](https://github.com/ratatui-org/ratatui/discussions/1034),
this lint is not suggested to be run by default in CI, but rather as an
occasional one-off as part of the larger
[`clippy::cargo`](https://doc.rust-lang.org/stable/clippy/lints.html#cargo)
lint group.
c75aa19 (uncategorized) Add clippy::cargo lint by @joshka in #1053
Followup to https://github.com/ratatui-org/ratatui/pull/1035 and
https://github.com/ratatui-org/ratatui/discussions/1034
It's reasonable to enable this and deal with breakage by fixing any
specific issues that arise.
Full Changelog: https://github.com/ratatui-org/ratatui/compare/v0.26.2...v0.26.3-alpha.2
97ee102 (buffer) Track_caller for index_of by @EdJoPaTo in #1046
The caller put in the wrong x/y -> the caller is the cause.
bf09234 (table) Make TableState::new const by @EdJoPaTo in #1040
0a16496
(uncategorized) Use to_string
to serialize Color by @SleepySwords in #934
Since deserialize now uses `FromStr` to deserialize color, serializing
`Color` RGB values, as well as index values, would produce an output
that would no longer be able to be deserialized without causing an
error.
Color::Rgb will now be serialized as the hex representation of their
value.
For example, with serde_json, Color::Rgb(255, 0, 255)
would be
serialized as "#FF00FF"
rather than {"Rgb": [255, 0, 255]}
.
Color::Indexed will now be serialized as just the string of the index.
For example, with serde_json, Color::Indexed(10)
would be serialized
as "10"
rather than {"Indexed": 10}
.
Other color variants remain the same.
2e71c18 (buffer) Simplify Buffer::filled with macro by @EdJoPaTo in #1036
The `vec![]` macro is highly optimized by the Rust team and shorter.
Don't do it manually.
This change is mainly cleaner code. The only production code that uses
this is `Terminal::with_options` and `Terminal::insert_before` so it's
not performance relevant on every render.
81b9633 (calendar) Use const fn by @EdJoPaTo in #1039
Also, do the comparison without `as u8`. Stays the same at runtime and
is cleaner code.
c442dfd (canvas) Change map data to const instead of static by @EdJoPaTo in #1037
5fbb77a (readme) Use terminal theme for badges by @TadoTheMiner in #1026
The badges in the readme were all the default theme. Giving them
prettier colors that match the terminal gif is better. I've used the
colors from the VHS repo.
326a461 (uncategorized) Add package categories field by @mcskware in #1035
Add the package categories field in Cargo.toml, with value
`["command-line-interface"]`. This fixes the (currently non-default)
clippy cargo group lint
[`clippy::cargo_common_metadata`](https://rust-lang.github.io/rust-clippy/master/index.html#/cargo_common_metadata).
As per discussion in [Cargo package categories
suggestions](https://github.com/ratatui-org/ratatui/discussions/1034),
this lint is not suggested to be run by default in CI, but rather as an
occasional one-off as part of the larger
[`clippy::cargo`](https://doc.rust-lang.org/stable/clippy/lints.html#cargo)
lint group.
c75aa19 (uncategorized) Add clippy::cargo lint by @joshka in #1053
Followup to https://github.com/ratatui-org/ratatui/pull/1035 and
https://github.com/ratatui-org/ratatui/discussions/1034
It's reasonable to enable this and deal with breakage by fixing any
specific issues that arise.
Full Changelog: https://github.com/ratatui-org/ratatui/compare/v0.26.2...v0.26.3-alpha.1
326a461 (uncategorized) Add package categories field by @mcskware in #1035
Add the package categories field in Cargo.toml, with value
`["command-line-interface"]`. This fixes the (currently non-default)
clippy cargo group lint
[`clippy::cargo_common_metadata`](https://rust-lang.github.io/rust-clippy/master/index.html#/cargo_common_metadata).
As per discussion in [Cargo package categories
suggestions](https://github.com/ratatui-org/ratatui/discussions/1034),
this lint is not suggested to be run by default in CI, but rather as an
occasional one-off as part of the larger
[`clippy::cargo`](https://doc.rust-lang.org/stable/clippy/lints.html#cargo)
lint group.
Full Changelog: https://github.com/ratatui-org/ratatui/compare/v0.26.2...v0.26.3-alpha.0
This is a patch release that fixes bugs and adds enhancements, including new iterator constructors, List scroll padding, and various rendering improvements. ✨
✨ Release highlights: https://ratatui.rs/highlights/v0262/
11b452d (layout) Mark various functions as const by @EdJoPaTo in #951
1cff511 (line) Impl Styled for Line by @joshka in #968
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
654949b (list) Add Scroll Padding to Lists by @CameronBarnes in #958
Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
```rust
let list = List::new(items).scroll_padding(1);
```
Fixes:https://github.com/ratatui-org/ratatui/pull/955
26af650 (text) Add push methods for text and line by @joshka in #998
Adds the following methods to the `Text` and `Line` structs:
- Text::push_line
- Text::push_span
- Line::push_span
This allows for adding lines and spans to a text object without having
to call methods on the fields directly, which is useful for incremental
construction of text objects.
b5bdde0
(text) Add FromIterator
impls for Line
and Text
by @joshka in #967
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
12f67e8
(uncategorized) Impl Widget for &str
and String
by @kdheepak in #952
Currently, `f.render_widget("hello world".bold(), area)` works but
`f.render_widget("hello world", area)` doesn't. This PR changes that my
implementing `Widget` for `&str` and `String`. This makes it easier to
render strings with no styles as widgets.
Example usage:
```rust
terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
```
---------
0207160 (line) Line truncation respects alignment by @TadoTheMiner in #987
When rendering a `Line`, the line will be truncated:
- on the right for left aligned lines
- on the left for right aligned lines
- on bot sides for centered lines
E.g. "Hello World" will be rendered as "Hello", "World", "lo wo" for
left, right, centered lines respectively.
Fixes:https://github.com/ratatui-org/ratatui/issues/932
c56f49b (list) Saturating_sub to fix highlight_symbol overflow by @mrjackwills in #949
An overflow (pedantically an underflow) can occur if the
highlight_symbol is a multi-byte char, and area is reduced to a size
less than that char length.
943c043 (scrollbar) Dont render on 0 length track by @EdJoPaTo in #964
Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
being smaller than `0.0`)
742a5ea (text) Fix panic when rendering out of bounds by @joshka in #997
Previously it was possible to cause a panic when rendering to an area
outside of the buffer bounds. Instead this now correctly renders nothing
to the buffer.
f6c4e44 (uncategorized) Ensure that paragraph correctly renders styled text by @joshka in #992
Paragraph was ignoring the new `Text::style` field added in 0.26.0
Fixes:https://github.com/ratatui-org/ratatui/issues/990
35e971f (uncategorized) Scrollbar thumb not visible on long lists by @ThomasMiz in #959
When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
6fd5f63 (lint) Prefer idiomatic for loops by @EdJoPaTo
37b957c (lints) Add lints to scrollbar by @EdJoPaTo
c12bcfe (non-src) Apply pedantic lints by @EdJoPaTo in #976
Fixes many not yet enabled lints (mostly pedantic) on everything that is
not the lib (examples, benches, tests). Therefore, this is not containing
anything that can be a breaking change.
Lints are not enabled as that should be the job of #974. I created this
as a separate PR as its mostly independent and would only clutter up the
diff of #974 even more.
Also see
https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
---------
8719608 (span) Rename to_aligned_line into into_aligned_line by @EdJoPaTo in #993
With the Rust method naming conventions these methods are into methods
consuming the Span. Therefore, it's more consistent to use `into_`
instead of `to_`.
```rust
Span::to_centered_line
Span::to_left_aligned_line
Span::to_right_aligned_line
```
Are marked deprecated and replaced with the following
```rust
Span::into_centered_line
Span::into_left_aligned_line
Span::into_right_aligned_line
```
b831c56 (widget-ref) Clippy::needless_pass_by_value by @EdJoPaTo
359204c (uncategorized) Simplify to io::Result by @EdJoPaTo in #1016
Simplifies the code, logic stays exactly the same.
8e68db9 (uncategorized) Remove pointless default on internal structs by @EdJoPaTo in #980
See #978
Also remove other derives. They are unused and just slow down compilation.
3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const by @EdJoPaTo
enabled by default on nightly
5c4efac (uncategorized) Clippy::map_err_ignore by @EdJoPaTo
bbb6d65 (uncategorized) Clippy::else_if_without_else by @EdJoPaTo
fdb14dc (uncategorized) Clippy::redundant_type_annotations by @EdJoPaTo
9b3b23a (uncategorized) Remove literal suffix by @EdJoPaTo
its not needed and can just be assumed
related:clippy::(un)separated_literal_suffix
58b6e0b (uncategorized) Clippy::should_panic_without_expect by @EdJoPaTo
c870a41 (uncategorized) Clippy::many_single_char_names by @EdJoPaTo
a6036ad (uncategorized) Clippy::similar_names by @EdJoPaTo
060d26b (uncategorized) Clippy::match_same_arms by @EdJoPaTo
fcbea9e (uncategorized) Clippy::uninlined_format_args by @EdJoPaTo
14b24e7 (uncategorized) Clippy::if_not_else by @EdJoPaTo
5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls by @EdJoPaTo
c8c7924 (uncategorized) Clippy::too_many_lines by @EdJoPaTo
e3afe7c (uncategorized) Clippy::unreadable_literal by @EdJoPaTo
a1f54de (uncategorized) Clippy::bool_to_int_with_if by @EdJoPaTo
b8ea190 (uncategorized) Clippy::cast_lossless by @EdJoPaTo
0de5238 (uncategorized) Dead_code by @EdJoPaTo
enabled by default, only detected by nightly yet
df5dddf (uncategorized) Unused_imports by @EdJoPaTo
enabled by default, only detected on nightly yet
f1398ae (uncategorized) Clippy::useless_vec by @EdJoPaTo
Lint enabled by default but only nightly finds this yet
525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes by @EdJoPaTo
660c718 (uncategorized) Clippy::empty_line_after_doc_comments by @EdJoPaTo
ab951fa (uncategorized) Clippy::return_self_not_must_use by @EdJoPaTo
3cd4369 (uncategorized) Clippy::doc_markdown by @EdJoPaTo
9bc014d (uncategorized) Clippy::items_after_statements by @EdJoPaTo
36a0cd5 (uncategorized) Clippy::deref_by_slicing by @EdJoPaTo
f7f6692 (uncategorized) Clippy::equatable_if_let by @EdJoPaTo
01418eb (uncategorized) Clippy::default_trait_access by @EdJoPaTo
8536760 (uncategorized) Clippy::inefficient_to_string by @EdJoPaTo
a558b19 (uncategorized) Clippy::implicit_clone by @EdJoPaTo
5b00e3a (uncategorized) Clippy::use_self by @EdJoPaTo
27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned by @EdJoPaTo
14461c3 (breaking-changes) Typos and markdownlint by @EdJoPaTo in #1009
3b002fd (uncategorized) Update incompatible code warning in examples readme by @joshka in #1013
e02f476 (borders) Allow border!() in const by @EdJoPaTo in #977
This allows more compiler optimizations when the macro is used.
541f0f9 (cell) Use const CompactString::new_inline by @EdJoPaTo in #979
Some minor find when messing around trying to `const` all the things.
While `reset()` and `default()` can not be `const` it's still a benefit
when their contents are.
65e7923 (scrollbar) Const creation by @EdJoPaTo in #963
A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
8195f52 (uncategorized) Clippy::needless_pass_by_value by @EdJoPaTo
183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref by @EdJoPaTo
a13867f (uncategorized) Clippy::cloned_instead_of_copied by @EdJoPaTo
3834374 (uncategorized) Clippy::missing_const_for_fn by @EdJoPaTo
125ee92 (docs) Fix: fix typos in crate documentation by @orhun in #1002
38c17e0 (editorconfig) Set and apply some defaults by @EdJoPaTo
07da90a (funding) Add eth address for receiving funds from drips.network by @BenJam in #994
078e97e (github) Add EdJoPaTo as a maintainer by @orhun in #986
b0314c5 (uncategorized) Remove conventional commit check for PR by @Valentin271 in #950
This removes conventional commit check for PRs.
Since we use the PR title and description this is useless. It fails a
lot of time and we ignore it.
IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
commits. This only relates to commits in PRs.
6e6ba27 (lint) Warn on pedantic and allow the rest by @EdJoPaTo
c4ce7e8 (uncategorized) Enable more satisfied lints by @EdJoPaTo
These lints dont generate warnings and therefore dont need refactoring.
I think they are useful in the future.
a4e84a6 (uncategorized) Increase msrv to 1.74.0 by @EdJoPaTo [breaking]
configure lints in Cargo.toml requires 1.74.0
BREAKING CHANGE:rust 1.74 is required now
Full Changelog: https://github.com/ratatui-org/ratatui/compare/v0.26.1...v0.26.2
1cff511 (line) Impl Styled for Line (#968)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
654949b (list) Add Scroll Padding to Lists (#958)
Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
```rust
let list = List::new(items).scroll_padding(1);
```
Fixes:https://github.com/ratatui-org/ratatui/pull/955
26af650 (text) Add push methods for text and line (#998)
Adds the following methods to the `Text` and `Line` structs:
- Text::push_line
- Text::push_span
- Line::push_span
This allows for adding lines and spans to a text object without having
to call methods on the fields directly, which is usefult for incremental
construction of text objects.
b5bdde0
(text) Add FromIterator
impls for Line
and Text
(#967)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
12f67e8
(uncategorized) Impl Widget for &str
and String
(#952)
Currently, `f.render_widget("hello world".bold(), area)` works but
`f.render_widget("hello world", area)` doesn't. This PR changes that my
implementing `Widget` for `&str` and `String`. This makes it easier to
render strings with no styles as widgets.
Example usage:
```rust
terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
```
---------
0207160 (line) Line truncation respects alignment (#987)
When rendering a `Line`, the line will be truncated:
- on the right for left aligned lines
- on the left for right aligned lines
- on bot sides for centered lines
E.g. "Hello World" will be rendered as "Hello", "World", "lo wo" for
left, right, centered lines respectively.
Fixes:https://github.com/ratatui-org/ratatui/issues/932
c56f49b (list) Saturating_sub to fix highlight_symbol overflow (#949)
An overflow (pedantically an underflow) can occur if the
highlight_symbol is a multi-byte char, and area is reduced to a size
less than that char length.
943c043 (scrollbar) Dont render on 0 length track (#964)
Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
being smaller than `0.0`)
742a5ea (text) Fix panic when rendering out of bounds (#997)
Previously it was possible to cause a panic when rendering to an area
outside of the buffer bounds. Instead this now correctly renders nothing
to the buffer.
f6c4e44 (uncategorized) Ensure that paragraph correctly renders styled text (#992)
Paragraph was ignoring the new `Text::style` field added in 0.26.0
Fixes:https://github.com/ratatui-org/ratatui/issues/990
35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)
When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
c12bcfe (non-src) Apply pedantic lints (#976)
Fixes many not yet enabled lints (mostly pedantic) on everything that is
not the lib (examples, benchs, tests). Therefore, this is not containing
anything that can be a breaking change.
Lints are not enabled as that should be the job of #974. I created this
as a separate PR as its mostly independent and would only clutter up the
diff of #974 even more.
Also see
https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
---------
8719608 (span) Rename to_aligned_line into into_aligned_line (#993)
With the Rust method naming conventions these methods are into methods
consuming the Span. Therefore, it's more consistent to use `into_`
instead of `to_`.
```rust
Span::to_centered_line
Span::to_left_aligned_line
Span::to_right_aligned_line
```
Are marked deprecated and replaced with the following
```rust
Span::into_centered_line
Span::into_left_aligned_line
Span::into_right_aligned_line
```
359204c (uncategorized) Simplify to io::Result (#1016)
Simplifies the code, logic stays exactly the same.
8e68db9 (uncategorized) Remove pointless default on internal structs (#980)
See #978
Also remove other derives. They are unused and just slow down compilation.
3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)
enabled by default on nightly
fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)
9b3b23a (uncategorized) Remove literal suffix (#974)
its not needed and can just be assumed
related:clippy::(un)separated_literal_suffix
58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)
c870a41 (uncategorized) Clippy::many_single_char_names (#974)
fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)
5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)
0de5238 (uncategorized) Dead_code (#974)
enabled by default, only detected by nightly yet
df5dddf (uncategorized) Unused_imports (#974)
enabled by default, only detected on nightly yet
f1398ae (uncategorized) Clippy::useless_vec (#974)
Lint enabled by default but only nightly finds this yet
525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)
660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)
ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)
9bc014d (uncategorized) Clippy::items_after_statements (#974)
8536760 (uncategorized) Clippy::inefficient_to_string (#974)
27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)
e02f476 (borders) Allow border!() in const (#977)
This allows more compiler optimizations when the macro is used.
541f0f9 (cell) Use const CompactString::new_inline (#979)
Some minor find when messing around trying to `const` all the things.
While `reset()` and `default()` can not be `const` it's still a benefit
when their contents are.
65e7923 (scrollbar) Const creation (#963)
A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)
183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)
a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)
125ee92 (docs) Fix: fix typos in crate documentation (#1002)
07da90a (funding) Add eth address for receiving funds from drips.network (#994)
b0314c5 (uncategorized) Remove conventional commit check for PR (#950)
This removes conventional commit check for PRs.
Since we use the PR title and description this is useless. It fails a
lot of time and we ignore it.
IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
commits. This only relates to commits in PRs.
c4ce7e8 (uncategorized) Enable more satisfied lints (#974)
These lints dont generate warnings and therefore dont need refactoring.
I think they are useful in the future.
a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]
configure lints in Cargo.toml requires 1.74.0
BREAKING CHANGE:rust 1.74 is required now
1cff511 (line) Impl Styled for Line (#968)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
654949b (list) Add Scroll Padding to Lists (#958)
Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
```rust
let list = List::new(items).scroll_padding(1);
```
Fixes:https://github.com/ratatui-org/ratatui/pull/955
26af650 (text) Add push methods for text and line (#998)
Adds the following methods to the `Text` and `Line` structs:
- Text::push_line
- Text::push_span
- Line::push_span
This allows for adding lines and spans to a text object without having
to call methods on the fields directly, which is usefult for incremental
construction of text objects.
b5bdde0
(text) Add FromIterator
impls for Line
and Text
(#967)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
12f67e8
(uncategorized) Impl Widget for &str
and String
(#952)
Currently, `f.render_widget("hello world".bold(), area)` works but
`f.render_widget("hello world", area)` doesn't. This PR changes that my
implementing `Widget` for `&str` and `String`. This makes it easier to
render strings with no styles as widgets.
Example usage:
```rust
terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
```
---------
0207160 (line) Line truncation respects alignment (#987)
When rendering a `Line`, the line will be truncated:
- on the right for left aligned lines
- on the left for right aligned lines
- on bot sides for centered lines
E.g. "Hello World" will be rendered as "Hello", "World", "lo wo" for
left, right, centered lines respectively.
Fixes:https://github.com/ratatui-org/ratatui/issues/932
c56f49b (list) Saturating_sub to fix highlight_symbol overflow (#949)
An overflow (pedantically an underflow) can occur if the
highlight_symbol is a multi-byte char, and area is reduced to a size
less than that char length.
943c043 (scrollbar) Dont render on 0 length track (#964)
Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
being smaller than `0.0`)
742a5ea (text) Fix panic when rendering out of bounds (#997)
Previously it was possible to cause a panic when rendering to an area
outside of the buffer bounds. Instead this now correctly renders nothing
to the buffer.
f6c4e44 (uncategorized) Ensure that paragraph correctly renders styled text (#992)
Paragraph was ignoring the new `Text::style` field added in 0.26.0
Fixes:https://github.com/ratatui-org/ratatui/issues/990
35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)
When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
c12bcfe (non-src) Apply pedantic lints (#976)
Fixes many not yet enabled lints (mostly pedantic) on everything that is
not the lib (examples, benchs, tests). Therefore, this is not containing
anything that can be a breaking change.
Lints are not enabled as that should be the job of #974. I created this
as a separate PR as its mostly independent and would only clutter up the
diff of #974 even more.
Also see
https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
---------
8719608 (span) Rename to_aligned_line into into_aligned_line (#993)
With the Rust method naming conventions these methods are into methods
consuming the Span. Therefore, it's more consistent to use `into_`
instead of `to_`.
```rust
Span::to_centered_line
Span::to_left_aligned_line
Span::to_right_aligned_line
```
Are marked deprecated and replaced with the following
```rust
Span::into_centered_line
Span::into_left_aligned_line
Span::into_right_aligned_line
```
359204c (uncategorized) Simplify to io::Result (#1016)
Simplifies the code, logic stays exactly the same.
8e68db9 (uncategorized) Remove pointless default on internal structs (#980)
See #978
Also remove other derives. They are unused and just slow down compilation.
3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)
enabled by default on nightly
fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)
9b3b23a (uncategorized) Remove literal suffix (#974)
its not needed and can just be assumed
related:clippy::(un)separated_literal_suffix
58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)
c870a41 (uncategorized) Clippy::many_single_char_names (#974)
fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)
5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)
0de5238 (uncategorized) Dead_code (#974)
enabled by default, only detected by nightly yet
df5dddf (uncategorized) Unused_imports (#974)
enabled by default, only detected on nightly yet
f1398ae (uncategorized) Clippy::useless_vec (#974)
Lint enabled by default but only nightly finds this yet
525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)
660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)
ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)
9bc014d (uncategorized) Clippy::items_after_statements (#974)
8536760 (uncategorized) Clippy::inefficient_to_string (#974)
27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)
e02f476 (borders) Allow border!() in const (#977)
This allows more compiler optimizations when the macro is used.
541f0f9 (cell) Use const CompactString::new_inline (#979)
Some minor find when messing around trying to `const` all the things.
While `reset()` and `default()` can not be `const` it's still a benefit
when their contents are.
65e7923 (scrollbar) Const creation (#963)
A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)
183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)
a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)
125ee92 (docs) Fix: fix typos in crate documentation (#1002)
07da90a (funding) Add eth address for receiving funds from drips.network (#994)
b0314c5 (uncategorized) Remove conventional commit check for PR (#950)
This removes conventional commit check for PRs.
Since we use the PR title and description this is useless. It fails a
lot of time and we ignore it.
IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
commits. This only relates to commits in PRs.
c4ce7e8 (uncategorized) Enable more satisfied lints (#974)
These lints dont generate warnings and therefore dont need refactoring.
I think they are useful in the future.
a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]
configure lints in Cargo.toml requires 1.74.0
BREAKING CHANGE:rust 1.74 is required now
1cff511 (line) Impl Styled for Line (#968)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
654949b (list) Add Scroll Padding to Lists (#958)
Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
```rust
let list = List::new(items).scroll_padding(1);
```
Fixes:https://github.com/ratatui-org/ratatui/pull/955
26af650 (text) Add push methods for text and line (#998)
Adds the following methods to the `Text` and `Line` structs:
- Text::push_line
- Text::push_span
- Line::push_span
This allows for adding lines and spans to a text object without having
to call methods on the fields directly, which is usefult for incremental
construction of text objects.
b5bdde0
(text) Add FromIterator
impls for Line
and Text
(#967)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
12f67e8
(uncategorized) Impl Widget for &str
and String
(#952)
Currently, `f.render_widget("hello world".bold(), area)` works but
`f.render_widget("hello world", area)` doesn't. This PR changes that my
implementing `Widget` for `&str` and `String`. This makes it easier to
render strings with no styles as widgets.
Example usage:
```rust
terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
```
---------
c56f49b (list) Saturating_sub to fix highlight_symbol overflow (#949)
An overflow (pedantically an underflow) can occur if the
highlight_symbol is a multi-byte char, and area is reduced to a size
less than that char length.
943c043 (scrollbar) Dont render on 0 length track (#964)
Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
being smaller than `0.0`)
742a5ea (text) Fix panic when rendering out of bounds (#997)
Previously it was possible to cause a panic when rendering to an area
outside of the buffer bounds. Instead this now correctly renders nothing
to the buffer.
f6c4e44 (uncategorized) Ensure that paragraph correctly renders styled text (#992)
Paragraph was ignoring the new `Text::style` field added in 0.26.0
Fixes:https://github.com/ratatui-org/ratatui/issues/990
35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)
When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
c12bcfe (non-src) Apply pedantic lints (#976)
Fixes many not yet enabled lints (mostly pedantic) on everything that is
not the lib (examples, benchs, tests). Therefore, this is not containing
anything that can be a breaking change.
Lints are not enabled as that should be the job of #974. I created this
as a separate PR as its mostly independent and would only clutter up the
diff of #974 even more.
Also see
https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
---------
8719608 (span) Rename to_aligned_line into into_aligned_line (#993)
With the Rust method naming conventions these methods are into methods
consuming the Span. Therefore, it's more consistent to use `into_`
instead of `to_`.
```rust
Span::to_centered_line
Span::to_left_aligned_line
Span::to_right_aligned_line
```
Are marked deprecated and replaced with the following
```rust
Span::into_centered_line
Span::into_left_aligned_line
Span::into_right_aligned_line
```
8e68db9 (uncategorized) Remove pointless default on internal structs (#980)
See #978
Also remove other derives. They are unused and just slow down compilation.
3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)
enabled by default on nightly
fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)
9b3b23a (uncategorized) Remove literal suffix (#974)
its not needed and can just be assumed
related:clippy::(un)separated_literal_suffix
58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)
c870a41 (uncategorized) Clippy::many_single_char_names (#974)
fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)
5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)
0de5238 (uncategorized) Dead_code (#974)
enabled by default, only detected by nightly yet
df5dddf (uncategorized) Unused_imports (#974)
enabled by default, only detected on nightly yet
f1398ae (uncategorized) Clippy::useless_vec (#974)
Lint enabled by default but only nightly finds this yet
525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)
660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)
ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)
9bc014d (uncategorized) Clippy::items_after_statements (#974)
8536760 (uncategorized) Clippy::inefficient_to_string (#974)
27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)
e02f476 (borders) Allow border!() in const (#977)
This allows more compiler optimizations when the macro is used.
541f0f9 (cell) Use const CompactString::new_inline (#979)
Some minor find when messing around trying to `const` all the things.
While `reset()` and `default()` can not be `const` it's still a benefit
when their contents are.
65e7923 (scrollbar) Const creation (#963)
A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)
183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)
a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)
125ee92 (docs) Fix: fix typos in crate documentation (#1002)
07da90a (funding) Add eth address for receiving funds from drips.network (#994)
b0314c5 (uncategorized) Remove conventional commit check for PR (#950)
This removes conventional commit check for PRs.
Since we use the PR title and description this is useless. It fails a
lot of time and we ignore it.
IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
commits. This only relates to commits in PRs.
c4ce7e8 (uncategorized) Enable more satisfied lints (#974)
These lints dont generate warnings and therefore dont need refactoring.
I think they are useful in the future.
a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]
configure lints in Cargo.toml requires 1.74.0
BREAKING CHANGE:rust 1.74 is required now
1cff511 (line) Impl Styled for Line (#968)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
654949b (list) Add Scroll Padding to Lists (#958)
Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
```rust
let list = List::new(items).scroll_padding(1);
```
Fixes:https://github.com/ratatui-org/ratatui/pull/955
b5bdde0
(text) Add FromIterator
impls for Line
and Text
(#967)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
12f67e8
(uncategorized) Impl Widget for &str
and String
(#952)
Currently, `f.render_widget("hello world".bold(), area)` works but
`f.render_widget("hello world", area)` doesn't. This PR changes that my
implementing `Widget` for `&str` and `String`. This makes it easier to
render strings with no styles as widgets.
Example usage:
```rust
terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
```
---------
c56f49b (list) Saturating_sub to fix highlight_symbol overflow (#949)
An overflow (pedantically an underflow) can occur if the
highlight_symbol is a multi-byte char, and area is reduced to a size
less than that char length.
943c043 (scrollbar) Dont render on 0 length track (#964)
Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
being smaller than `0.0`)
f6c4e44 (uncategorized) Ensure that paragraph correctly renders styled text (#992)
Paragraph was ignoring the new `Text::style` field added in 0.26.0
Fixes:https://github.com/ratatui-org/ratatui/issues/990
35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)
When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
c12bcfe (non-src) Apply pedantic lints (#976)
Fixes many not yet enabled lints (mostly pedantic) on everything that is
not the lib (examples, benchs, tests). Therefore, this is not containing
anything that can be a breaking change.
Lints are not enabled as that should be the job of #974. I created this
as a separate PR as its mostly independent and would only clutter up the
diff of #974 even more.
Also see
https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
---------
8719608 (span) Rename to_aligned_line into into_aligned_line (#993)
With the Rust method naming conventions these methods are into methods
consuming the Span. Therefore, it's more consistent to use `into_`
instead of `to_`.
```rust
Span::to_centered_line
Span::to_left_aligned_line
Span::to_right_aligned_line
```
Are marked deprecated and replaced with the following
```rust
Span::into_centered_line
Span::into_left_aligned_line
Span::into_right_aligned_line
```
8e68db9 (uncategorized) Remove pointless default on internal structs (#980)
See #978
Also remove other derives. They are unused and just slow down compilation.
3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)
enabled by default on nightly
fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)
9b3b23a (uncategorized) Remove literal suffix (#974)
its not needed and can just be assumed
related:clippy::(un)separated_literal_suffix
58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)
c870a41 (uncategorized) Clippy::many_single_char_names (#974)
fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)
5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)
0de5238 (uncategorized) Dead_code (#974)
enabled by default, only detected by nightly yet
df5dddf (uncategorized) Unused_imports (#974)
enabled by default, only detected on nightly yet
f1398ae (uncategorized) Clippy::useless_vec (#974)
Lint enabled by default but only nightly finds this yet
525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)
660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)
ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)
9bc014d (uncategorized) Clippy::items_after_statements (#974)
8536760 (uncategorized) Clippy::inefficient_to_string (#974)
27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)
e02f476 (borders) Allow border!() in const (#977)
This allows more compiler optimizations when the macro is used.
541f0f9 (cell) Use const CompactString::new_inline (#979)
Some minor find when messing around trying to `const` all the things.
While `reset()` and `default()` can not be `const` it's still a benefit
when their contents are.
65e7923 (scrollbar) Const creation (#963)
A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)
183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)
a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)
b0314c5 (uncategorized) Remove conventional commit check for PR (#950)
This removes conventional commit check for PRs.
Since we use the PR title and description this is useless. It fails a
lot of time and we ignore it.
IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
commits. This only relates to commits in PRs.
c4ce7e8 (uncategorized) Enable more satisfied lints (#974)
These lints dont generate warnings and therefore dont need refactoring.
I think they are useful in the future.
a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]
configure lints in Cargo.toml requires 1.74.0
BREAKING CHANGE:rust 1.74 is required now
1cff511 (line) Impl Styled for Line (#968)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
654949b (list) Add Scroll Padding to Lists (#958)
Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
```rust
let list = List::new(items).scroll_padding(1);
```
Fixes:https://github.com/ratatui-org/ratatui/pull/955
b5bdde0
(text) Add FromIterator
impls for Line
and Text
(#967)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
12f67e8
(uncategorized) Impl Widget for &str
and String
(#952)
Currently, `f.render_widget("hello world".bold(), area)` works but
`f.render_widget("hello world", area)` doesn't. This PR changes that my
implementing `Widget` for `&str` and `String`. This makes it easier to
render strings with no styles as widgets.
Example usage:
```rust
terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
```
---------
943c043 (scrollbar) Dont render on 0 length track (#964)
Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
being smaller than `0.0`)
35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)
When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
c12bcfe (non-src) Apply pedantic lints (#976)
Fixes many not yet enabled lints (mostly pedantic) on everything that is
not the lib (examples, benchs, tests). Therefore, this is not containing
anything that can be a breaking change.
Lints are not enabled as that should be the job of #974. I created this
as a separate PR as its mostly independent and would only clutter up the
diff of #974 even more.
Also see
https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
---------
8e68db9 (uncategorized) Remove pointless default on internal structs (#980)
See #978
Also remove other derives. They are unused and just slow down compilation.
3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)
enabled by default on nightly
fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)
9b3b23a (uncategorized) Remove literal suffix (#974)
its not needed and can just be assumed
related:clippy::(un)separated_literal_suffix
58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)
c870a41 (uncategorized) Clippy::many_single_char_names (#974)
fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)
5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)
0de5238 (uncategorized) Dead_code (#974)
enabled by default, only detected by nightly yet
df5dddf (uncategorized) Unused_imports (#974)
enabled by default, only detected on nightly yet
f1398ae (uncategorized) Clippy::useless_vec (#974)
Lint enabled by default but only nightly finds this yet
525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)
660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)
ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)
9bc014d (uncategorized) Clippy::items_after_statements (#974)
8536760 (uncategorized) Clippy::inefficient_to_string (#974)
27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)
e02f476 (borders) Allow border!() in const (#977)
This allows more compiler optimizations when the macro is used.
541f0f9 (cell) Use const CompactString::new_inline (#979)
Some minor find when messing around trying to `const` all the things.
While `reset()` and `default()` can not be `const` it's still a benefit
when their contents are.
65e7923 (scrollbar) Const creation (#963)
A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)
183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)
a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)
b0314c5 (uncategorized) Remove conventional commit check for PR (#950)
This removes conventional commit check for PRs.
Since we use the PR title and description this is useless. It fails a
lot of time and we ignore it.
IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
commits. This only relates to commits in PRs.
c4ce7e8 (uncategorized) Enable more satisfied lints (#974)
These lints dont generate warnings and therefore dont need refactoring.
I think they are useful in the future.
a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]
configure lints in Cargo.toml requires 1.74.0
BREAKING CHANGE:rust 1.74 is required now
1cff511 (line) Impl Styled for Line (#968)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
654949b (list) Add Scroll Padding to Lists (#958)
Introduces scroll padding, which allows the api user to request that a certain number of ListItems be kept visible above and below the currently selected item while scrolling.
```rust
let list = List::new(items).scroll_padding(1);
```
Fixes:https://github.com/ratatui-org/ratatui/pull/955
b5bdde0
(text) Add FromIterator
impls for Line
and Text
(#967)
This adds `FromIterator` impls for `Line` and `Text` that allow creating
`Line` and `Text` instances from iterators of `Span` and `Line`
instances, respectively.
```rust
let line = Line::from_iter(vec!["Hello".blue(), " world!".green()]);
let line: Line = iter::once("Hello".blue())
.chain(iter::once(" world!".green()))
.collect();
let text = Text::from_iter(vec!["The first line", "The second line"]);
let text: Text = iter::once("The first line")
.chain(iter::once("The second line"))
.collect();
```
12f67e8
(uncategorized) Impl Widget for &str
and String
(#952)
Currently, `f.render_widget("hello world".bold(), area)` works but
`f.render_widget("hello world", area)` doesn't. This PR changes that my
implementing `Widget` for `&str` and `String`. This makes it easier to
render strings with no styles as widgets.
Example usage:
```rust
terminal.draw(|f| f.render_widget("Hello World!", f.size()))?;
```
---------
943c043 (scrollbar) Dont render on 0 length track (#964)
Fixes a panic when `track_length - 1` is used. (clamp panics on `-1.0`
being smaller than `0.0`)
35e971f (uncategorized) Scrollbar thumb not visible on long lists (#959)
When displaying somewhat-long lists, the `Scrollbar` widget sometimes did not display a thumb character, and only the track will be visible.
c12bcfe (non-src) Apply pedantic lints (#976)
Fixes many not yet enabled lints (mostly pedantic) on everything that is
not the lib (examples, benchs, tests). Therefore, this is not containing
anything that can be a breaking change.
Lints are not enabled as that should be the job of #974. I created this
as a separate PR as its mostly independent and would only clutter up the
diff of #974 even more.
Also see
https://github.com/ratatui-org/ratatui/pull/974#discussion_r1506458743
---------
3be189e (uncategorized) Clippy::thread_local_initializer_can_be_made_const (#974)
enabled by default on nightly
fdb14dc (uncategorized) Clippy::redundant_type_annotations (#974)
9b3b23a (uncategorized) Remove literal suffix (#974)
its not needed and can just be assumed
related:clippy::(un)separated_literal_suffix
58b6e0b (uncategorized) Clippy::should_panic_without_expect (#974)
c870a41 (uncategorized) Clippy::many_single_char_names (#974)
fcbea9e (uncategorized) Clippy::uninlined_format_args (#974)
5ed1f43 (uncategorized) Clippy::redundant_closure_for_method_calls (#974)
0de5238 (uncategorized) Dead_code (#974)
enabled by default, only detected by nightly yet
df5dddf (uncategorized) Unused_imports (#974)
enabled by default, only detected on nightly yet
f1398ae (uncategorized) Clippy::useless_vec (#974)
Lint enabled by default but only nightly finds this yet
525848f (uncategorized) Manually apply clippy::use_self for impl with lifetimes (#974)
660c718 (uncategorized) Clippy::empty_line_after_doc_comments (#974)
ab951fa (uncategorized) Clippy::return_self_not_must_use (#974)
9bc014d (uncategorized) Clippy::items_after_statements (#974)
8536760 (uncategorized) Clippy::inefficient_to_string (#974)
27680c0 (uncategorized) Clippy::semicolon_if_nothing_returned (#974)
e02f476 (borders) Allow border!() in const (#977)
This allows more compiler optimizations when the macro is used.
541f0f9 (cell) Use const CompactString::new_inline (#979)
Some minor find when messing around trying to `const` all the things.
While `reset()` and `default()` can not be `const` it's still a benefit
when their contents are.
65e7923 (scrollbar) Const creation (#963)
A bunch of `const fn` allow for more performance and `Default` now uses the `const` new implementations.
8195f52 (uncategorized) Clippy::needless_pass_by_value (#974)
183c07e (uncategorized) Clippy::trivially_copy_pass_by_ref (#974)
a13867f (uncategorized) Clippy::cloned_instead_of_copied (#974)
b0314c5 (uncategorized) Remove conventional commit check for PR (#950)
This removes conventional commit check for PRs.
Since we use the PR title and description this is useless. It fails a
lot of time and we ignore it.
IMPORTANT NOTE: This does **not** mean Ratatui abandons conventional
commits. This only relates to commits in PRs.
c4ce7e8 (uncategorized) Enable more satisfied lints (#974)
These lints dont generate warnings and therefore dont need refactoring.
I think they are useful in the future.
a4e84a6 (uncategorized) Increase msrv to 1.74.0 (#974) [breaking]
configure lints in Cargo.toml requires 1.74.0
BREAKING CHANGE:rust 1.74 is required now