зеркало из
https://github.com/glebtv/tui-textarea.git
synced 2026-08-28 11:36:17 +03:00
simplify ratatui/tui-rs feature groups by adding ratatui and tuirs features
Этот коммит содержится в:
12
.github/workflows/ci.yml
поставляемый
12
.github/workflows/ci.yml
поставляемый
@@ -18,8 +18,8 @@ jobs:
|
||||
- run: cargo test --no-default-features --features=tuirs-crossterm,search -- --skip .rs
|
||||
- run: cargo test --no-default-features --features=tuirs-termion,search -- --skip .rs
|
||||
if: ${{ matrix.os != 'windows-latest' }}
|
||||
- run: cargo test --no-default-features --features=your-backend,search -- --skip .rs
|
||||
- run: cargo test --no-default-features --features=tuirs-your-backend,search -- --skip .rs
|
||||
- run: cargo test --no-default-features --features=no-backend,search -- --skip .rs
|
||||
- run: cargo test --no-default-features --features=tuirs-no-backend,search -- --skip .rs
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
@@ -33,12 +33,12 @@ jobs:
|
||||
- run: cargo clippy --examples --features search -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features termion -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features termion,search -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features your-backend -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features your-backend,search -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features no-backend -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features no-backend,search -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features tuirs-crossterm -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features tuirs-crossterm,search -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features tuirs-termion -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features tuirs-termion,search -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features tuirs-your-backend -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features tuirs-your-backend,search -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features tuirs-no-backend -- -D warnings
|
||||
- run: cargo clippy --examples --no-default-features --features tuirs-no-backend,search -- -D warnings
|
||||
- run: cargo rustdoc --features=search -p tui-textarea -- -D warnings
|
||||
|
||||
16
Cargo.toml
16
Cargo.toml
@@ -25,14 +25,16 @@ include = [
|
||||
[features]
|
||||
default = ["crossterm"]
|
||||
# Features to use ratatui
|
||||
crossterm = ["dep:crossterm", "ratatui/crossterm"]
|
||||
termion = ["dep:termion", "ratatui/termion"]
|
||||
termwiz = ["dep:termwiz", "ratatui/termwiz"]
|
||||
no-backend = ["dep:ratatui"]
|
||||
ratatui = ["dep:ratatui"]
|
||||
crossterm = ["ratatui", "dep:crossterm", "ratatui/crossterm"]
|
||||
termion = ["ratatui", "dep:termion", "ratatui/termion"]
|
||||
termwiz = ["ratatui", "dep:termwiz", "ratatui/termwiz"]
|
||||
no-backend = ["ratatui"]
|
||||
# Features to use tui-rs
|
||||
tuirs-crossterm = ["dep:crossterm-025", "tui/crossterm"]
|
||||
tuirs-termion = ["dep:termion", "tui/termion"]
|
||||
tuirs-no-backend = ["dep:tui"]
|
||||
tuirs = ["dep:tui"]
|
||||
tuirs-crossterm = ["tuirs", "dep:crossterm-025", "tui/crossterm"]
|
||||
tuirs-termion = ["tuirs", "dep:termion", "tui/termion"]
|
||||
tuirs-no-backend = ["tuirs"]
|
||||
# Other optional features
|
||||
search = ["dep:regex"]
|
||||
|
||||
|
||||
@@ -1,22 +1,13 @@
|
||||
use crate::ratatui::style::Style;
|
||||
#[cfg(any(
|
||||
feature = "crossterm",
|
||||
feature = "termion",
|
||||
feature = "termwiz",
|
||||
feature = "no-backend",
|
||||
))]
|
||||
use crate::ratatui::text::Line;
|
||||
use crate::ratatui::text::Span;
|
||||
#[cfg(any(
|
||||
feature = "tuirs-crossterm",
|
||||
feature = "tuirs-termion",
|
||||
feature = "tuirs-no-backend",
|
||||
))]
|
||||
use crate::ratatui::text::Spans as Line;
|
||||
use crate::util::{num_digits, spaces};
|
||||
#[cfg(feature = "ratatui")]
|
||||
use ratatui::text::Line;
|
||||
use std::borrow::Cow;
|
||||
use std::cmp::Ordering;
|
||||
use std::iter;
|
||||
#[cfg(feature = "tuirs")]
|
||||
use tui::text::Spans as Line;
|
||||
use unicode_width::UnicodeWidthChar as _;
|
||||
|
||||
enum Boundary {
|
||||
|
||||
27
src/lib.rs
27
src/lib.rs
@@ -4,19 +4,7 @@
|
||||
#![cfg_attr(docsrs, feature(doc_cfg))]
|
||||
#![doc = include_str!("../README.md")]
|
||||
|
||||
#[cfg(all(
|
||||
any(
|
||||
feature = "crossterm",
|
||||
feature = "termion",
|
||||
feature = "termwiz",
|
||||
feature = "no-backend",
|
||||
),
|
||||
any(
|
||||
feature = "tuirs-crossterm",
|
||||
feature = "tuirs-termion",
|
||||
feature = "tuirs-no-backend",
|
||||
),
|
||||
))]
|
||||
#[cfg(all(feature = "ratatui", feature = "tuirs"))]
|
||||
compile_error!("ratatui support and tui-rs support are exclussive. only one of them can be enabled at the same time. see https://github.com/rhysd/tui-textarea#installation");
|
||||
|
||||
mod cursor;
|
||||
@@ -31,19 +19,10 @@ mod util;
|
||||
mod widget;
|
||||
mod word;
|
||||
|
||||
#[cfg(any(
|
||||
feature = "crossterm",
|
||||
feature = "termion",
|
||||
feature = "termwiz",
|
||||
feature = "no-backend",
|
||||
))]
|
||||
#[cfg(feature = "ratatui")]
|
||||
#[allow(clippy::single_component_path_imports)]
|
||||
use ratatui;
|
||||
#[cfg(any(
|
||||
feature = "tuirs-crossterm",
|
||||
feature = "tuirs-termion",
|
||||
feature = "tuirs-no-backend",
|
||||
))]
|
||||
#[cfg(feature = "tuirs")]
|
||||
use tui as ratatui;
|
||||
|
||||
#[cfg(feature = "crossterm")]
|
||||
|
||||
@@ -4,19 +4,6 @@ use crate::history::{Edit, EditKind, History};
|
||||
use crate::input::{Input, Key};
|
||||
use crate::ratatui::layout::Alignment;
|
||||
use crate::ratatui::style::{Color, Modifier, Style};
|
||||
#[cfg(any(
|
||||
feature = "crossterm",
|
||||
feature = "termion",
|
||||
feature = "termwiz",
|
||||
feature = "no-backend",
|
||||
))]
|
||||
use crate::ratatui::text::Line;
|
||||
#[cfg(any(
|
||||
feature = "tuirs-crossterm",
|
||||
feature = "tuirs-termion",
|
||||
feature = "tuirs-no-backend",
|
||||
))]
|
||||
use crate::ratatui::text::Spans as Line;
|
||||
use crate::ratatui::widgets::{Block, Widget};
|
||||
use crate::scroll::Scrolling;
|
||||
#[cfg(feature = "search")]
|
||||
@@ -24,6 +11,10 @@ use crate::search::Search;
|
||||
use crate::util::spaces;
|
||||
use crate::widget::{Renderer, Viewport};
|
||||
use crate::word::{find_word_end_forward, find_word_start_backward};
|
||||
#[cfg(feature = "ratatui")]
|
||||
use ratatui::text::Line;
|
||||
#[cfg(feature = "tuirs")]
|
||||
use tui::text::Spans as Line;
|
||||
use unicode_width::UnicodeWidthChar as _;
|
||||
|
||||
/// A type to manage state of textarea.
|
||||
|
||||
Ссылка в новой задаче
Block a user